처음 생각한 방법은 단순히 정렬하고 비교였다.
하지만 하다보니 코드 길어지고 너무 구구절절해져서 급하게 HashMap을 공부하고 다시 짰다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> map = new HashMap<>();
// 참가자 카운트 (동명이인일시 +1)
for (String name : participant) {
map.put(name, map.getOrDefault(name, 0) + 1);
}
// 완주자 카운트 (완주할 시 -1)
for (String name : completion) {
map.put(name, map.get(name) - 1);
}
for (String key : map.keySet()) {
if (map.get(key) > 0) {
return key;
}
}
return "";
}
}
생각의 순서
1. 동명이인을 처리할 방법: key 중복이 되지 않는 map을 쓰자!
2. 동명이인 처리 후 완주자 비교: 해당 값을 변경해서 알려주자!
3. 처리후 출력: map을 돌며 값이 있다면 해당 키를 출력하자! (값이 있다는 것은 완주자 비교시 값이 바뀌지 않았다는 것, 그리고 동명이인이 있다는 것.)