코테/프로그래머스
프로그래머스 완주하지 못한 선수
65살까지 코딩
2022. 1. 15. 09:53
728x90
반응형
import java.util.HashMap;
import java.util.Set;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
//HashMap를 사용하면 간단히 풀리는 문제
//key와 value 형태로 값을 저장함 -> key가 중복될 경우 자동으로 replace되니 조심
//EX{"name1" : 2, "name2", 1"} pytho의 dictionary 형태인데 저장하는 방식이 다를뿐임
HashMap<String, Integer> hashMap = new HashMap<>();
//이름과 숫자로 해시맵을 하나 만듦
//이름이 겹칠 수 있는데 겹친다면 벨류값을 +1해줌
for (int i = 0; i < participant.length; i++) {
String people = participant[i];
if(hashMap.containsKey(people)){
hashMap.put(people, hashMap.get(people)+1);
}else{
hashMap.put(people,1);
}
}
//1차로 contains key를 통해 완주자 배열에서 이름을 하나씩 꺼내어 해시맵의 key를 통해 확인
//꺼낼떄 value값을 1씩 빼줌
for( int i =0; i<completion.length; i++){
String people = completion[i];
if(hashMap.get(people) ==1){
hashMap.remove(people);
}else{
hashMap.put(people,hashMap.get(people)-1);
}
}
//문제 조건에 따르면 해시맵에 value가 1인 값이 하나가 남을 수 밖에 없음
//조건에 맞게 string으로 변경하여 return
answer = hashMap.keySet().toString();
System.out.println(answer);
return answer;
}
}
출처:https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
728x90
반응형