첫 시도
- participant 배열에 있는 선수들의 이름을 key로 하여 map을 만든다
- 동명이인이 있을 수 있으므로 value는 Integer로 하여 해당 이름을 가진 선수의 수를 나타내도록 한다
- completion 배열의 선수 이름들을 key로 하여 value를 가져와 1을 뺀다.
- map을 순회하면서 0보다 큰 value를 가지고 있는 선수가 발견되면 그 선수의 이름을 출력하고 종료한다.
- 시간 복잡도는 O(3*10^5-1)이다 -> 선수 이름 수만큼 map 만들기 + 도착한 선수 이름만큼 map의 value -1하기 + value가 0이 아닌 선수 이름 찾기
해결
- 내용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer ="";
HashMap<String, Integer> hm = new HashMap<>();
for(String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
for(String player : completion) hm.put(player, hm.get(player) -1);
for(String key : hm.keySet()) {
if(hm.get(key) != 0) {
answer = key;
System.out.println(answer);
break;
}
}
return answer;
}
}