해시로 풀라고 준 문제지만 해시로 풀 방법을 빠르게 떠오르지 못했다..
그래서 내 방식대로 풀어버렸다.
참가자들과 완주한 사람들 배열을 정렬해서 비교하는 방식이다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
for(int i=0; i<participant.length-1; i++){
if(!(participant[i].equals(completion[i])))
return participant[i];
}
return participant[participant.length-1];
}
}
해시맵을 사용할 경우 getOrDefault를 이용해야한다.
해시맵은 중복키를 허용하지 않는 점을 이용해야한다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for (String player : participant)
map.put(player, map.getOrDefault(player, 0) + 1);
for (String player : completion)
map.put(player, map.get(player) - 1);
for (String key : map.keySet()) {
if (map.get(key) != 0){
answer = key;
}
}
return answer;
}
}