참가자 명단과 완주자 명단이 주어진다. 완주하지 못한 단 한 명의 이름을 찾는다.
제한사항
completion의 길이는 participant보다 정확히 1 작다Map<String, Integer>로 이름별 인원 수를 관리한다.
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> map = new HashMap<>();
for (String name : participant) {
map.put(name, map.getOrDefault(name, 0) + 1);
}
for (String name : completion) {
map.put(name, map.get(name) - 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() > 0) {
return entry.getKey();
}
}
return "";
}
}
시간복잡도: O(N) — 참가자 N번, 완주자 N-1번, 맵 순회 최대 N번. 해시 조회는 평균 O(1)이다.
공간복잡도: O(N) — 맵에 최대 N개의 서로 다른 이름.