수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
| participant | completion | return |
|---|---|---|
| ["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
| ["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
| ["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> completeMap = new HashMap<>();
//완주자 명단
for (int i=0; i<completion.length; i++) {
if (completeMap.containsKey(completion[i])) {
completeMap.put(completion[i], completeMap.get(completion[i]) + 1);
} else {
completeMap.put(completion[i], 1);
}
}
for (int i = 0; i< participant.length; i++) {
if(completeMap.containsKey((participant[i]))){
if (completeMap.get(participant[i]) > 0) {
completeMap.put(participant[i], completeMap.get(participant[i]) - 1);
} else {
// 완주 못함
answer = participant[i];
break;
}
} else {
// 완주 못함
answer = participant[i];
break;
}
}
return answer;
}
}
넘 어려웠다!
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;
}
getOrDefaultkeySet()