동명이인이 있을 수 있다는 것에 꽂혀서 set
을 사용하려고 했다.
set
이 동일하지 않은 경우 두 집합의 차집합이 answer가 된다.set
이 동일할 경우, for문을 통해 순회를 한다.# set이 다른 경우에는 차집합
# set이 같은 경우에는 for 문...?
def solution(participant, completion):
if set(participant) != set(completion):
answer = list(set(participant)-set(completion))[0]
else:
sorted_participant = sorted(participant)
sorted_completion = sorted(completion)
for i, p in enumerate(sorted_participant):
if p != sorted_completion[i]:
answer = p
break
return answer
sorted
함수와 .sort()
메소드가 가끔씩 헷갈린다sorted
함수는 return값으로 새로운 리스트를 내뱉는다고 기억해두자!collections
모듈의 collections.Counter
라는 것을 사용한 분들이 많았다.
dict subclass for counting hashable objects
hash로 표현 가능한 object들의 개수를 세기 위한 dictionary 의 서브클래스이다.
다시 말해, 주어진 데이터의 요소들의 개수를 셀 때 매우 편리한 클래스이다. hash 관련 문제를 풀 때 많이 사용하는 것 같다.
Counter라는 클래스의 좋은 점은 덧셈 뺄셈 연산이 가능하다는 것이다!
import collections
c1 = collections.Counter(['바나나', '호랑이', '호랑이'])
c2 = collections.Counter(['바나나', '호랑이'])
c1-c2 #Counter({'호랑이':1})
key, value값은 dic처럼 다루면 된다.
이 클래스를 사용하면 코드가 훨씬 간결해지고, hash 출제 의도에 맞는 코드를 작성할 수 있다.