- 매개변수로 주어진 두 배열을 오름차순 정렬한다.
- completion 길이만큼 반복하면서 두 배열의 같은 인덱스 값이 같은지 비교한다.
2-1. 값이 다르면 participant[i] 값을 반환한다.- 반복문이 종료하면 participant[-1] 값을 반환한다.
def solution(participant, completion):
participant.sort()
completion.sort()
n = len(completion)
for i in range(n):
if participant[i] == completion[i]:
if i == n-1: return participant[i+1]
continue
else: return participant[i]
def solution(participant, completion):
participant.sort();
completion.sort();
for i in range(len(completion)):
if(participant[i] != completion[i]): return participant[i]
return participant[-1]
✔️ 해시 사용
def solution(participant, completion):
answer = ''
temp = 0
dic = {}
for part in participant:
dic[hash(part)] = part
temp += hash(part)
for com in completion:
temp -= hash(com)
answer = dic[temp]
return answer
참가자들의 이름을 값으로 하고 해시값을 키로 갖는 딕셔너리 dic와 참가자들의 해시값의 총 합을 담은 변수 temp를 만든다. 이때 동명이인은 해시값이 똑같기 때문에 dic에 중복되지 않은 상태이며, temp에만 값이 중복해서 더해진다. 완주자 이름의 해시값을 temp에서 하나씩 빼다보면 결국 완주하지 못한 선수의 해시값만 남게되므로, 이를 키로 사용해서 이름을 가져올 수 있다.
✔️ collections.Counter 사용
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
딕셔너리끼리 뺄셈이 가능하다는 사실을 알게되었다,,