정렬을 한 후 Arrays.sort() 를 하여 답을 찾는 방법과 HashMap 을 사용하는 방법이 있습니다.
sort 는 시간 복잡도가 O(nlogn)이고
HashMap 을 사용한다면 검색 시간이 O(n) 입니다.
HashMap 방식에서 getOrDefault(Object key, V DefaultValue)로 값이 없을 때 기본값을 가져오게 해주는 메소드를 활용하면 편합니다.
List 사용 방법
import java.util.Arrays;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
for (int i = 0; i < completion.length; i++) {
if (!participant[i].equals(completion[i]))
return participant[i];
}
return participant[participant.length - 1];
}
}
HashMap 사용 방법
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hs = new HashMap<>();
for(String person : participant) hs.put(person, hs.getOrDefault(person, 0) + 1);
for(String winner : completion) hs.put(winner, hs.get(winner) - 1);
for(String key : hs.keySet()){
if(hs.get(key) != 0)
return key;
}
return answer;
}
}