문제 링크 : 완주하지 못한 선수
public String solution(String[] participant, String[] completion) {
int i = 0;
Arrays.sort(participant);
Arrays.sort(completion);
for(i = 0; i < completion.length; i++){
if(!participant[i].equals(completion[i])){
break;
}
}
return participant[i];
}
내가 푼 방법은 양 문자열을 정렬한 뒤, 서로 비교해가면서 값이 다른 곳에서 멈춘 후, 반환하는 방식을 선택했다.
다른 풀이를 살펴보니 HashMap을 사용해서 푼 방법이 있어서 해당 방법도 공유하고자 한다.
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;
}
}
return answer;
}