문제
강의에 들어있는 문제라서 문제 링크를 걸어도 되는지 모르겠다.
마라톤에 참여한 선수 중 한명을 제외하고 모두 완주했다.
이때 완주하지 못한 선수의 이름을 찾아라.
참여 선수 이름이 담긴 배열 : participant
완주 선수 이름이 담긴 배열 : completion
참여한 선수는 1명 이상 100,000명 이하이다.
completion의 길이는 participant보다 1작다.
참가자의 이름은 1~20글자의 알파벳 소문자로 이루어져 있다.
동명이인이 있을 수 있다.
입출력 예시
participant | completion | return |
---|---|---|
[“leo”, “kiki”, “eden”] | [“eden”, “kiki”] | “leo” |
접근
딕셔너리를 이용하여 참가자의 이름별로 카운팅하고, 완주자들을 빼주면 한명만 남을 것이다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(participant, completion):
answer = ''
dic = {}
for p in participant:
dic[p] = dic.get(p, 0) + 1
for c in completion:
dic[c] -= 1
for dkey, dval in dic.items():
if dval > 0:
answer = dkey
break
return answer