

나의 풀이
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for (String s : participant) map.put(s, map.getOrDefault(s, 0) + 1); // 1
for (String s : completion) map.put(s, map.get(s) - 1); // 2
for (String key : map.keySet()) { // 3
if (map.get(key) != 0){
answer = key;
}
}
return answer;
}
}
과정
- 참가자 명단을 순회하며, 참가자의 이름을 key로 하고, 출현 횟수를 value로 하는 항목을 map에 추가한다. (map에 key s가 있으면 해당하는 value를 반환하고, 없으면 0을 반환)
- 완주한 사람들의 명단을 순회하며, 완주자의 이름에 해당하는 map의 항목의 value를 1씩 감소
- value가 0이 아닌 항목을 찾는다(완주하지 못한 참가자의 이름에 해당하는 항목의 value는 0이 아님)
다른 사람 풀이
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for ( i=0; i<completion.length; i++){
if (!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
}