문제 보러 가기 👈 클릭!
참가자들의 이름이 key, 값이 -1(동명이인 참가자가 있으면 해당값 -1 해줘서 값이 -2)인 딕셔너리 생성. 해당 딕셔너리에서 완주한 참가자가 key로 존재하는 값을 +1해줌. 그러면 딕셔너리는 '완주한 참가자 이름' : 0, '완주하지 못한 참가자 이름': 0보다 작은 값이 됨. 이때 0보다 작은 값을 갖는 key(=name)을 return.
입력 받은 리스트들을 정렬하고 순서대로 비교하며 다른 값을 찾아서 return 한다. 다른 값이 없을 때, 완주하지 못한 사람은 무조건 1명이 존재하므로 사전순에 가장 마지막에 있는 참가자의 이름을 return
def solution(participant, completion):
answer = ''
dict = {}
for name in participant:
dict[name] = dict.get(name, 0) - 1
for name in completion:
dict[name] += 1
if dict[name]:
return name
for name,val in dict.items():
if val:
return name
def solution(participant, completion):
answer = ''
participant.sort()
completion.sort()
for idx, name in enumerate(completion):
if name != participant[idx]:
return participant[idx]
return participant[-1]
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> map = new HashMap<>();
for(String nm : participant) {
map.put(nm, map.getOrDefault(nm, 0) + 1);
}
for(String nm : completion) {
map.put(nm, map.get(nm) - 1);
}
for(String nm : map.keySet()){
if(map.get(nm) != 0) return nm;
}
return "";
}
}