def solution(participant, completion): for i in participant: if participant not in completion: return participant
결과는 실패... 동명이인을 고려하지 못하였다.
participant 와 completion을 합한 뒤 Counter를 이용하여 값이 value 값이 2가 아닌 수를 찾아내는 방법
from collections import Counter def solution(participant, completion): all = participant + completion all2 = set(participant + completion) for i in all2: if Counter(all)[i] != 2: return i
이것또한 실패
테스트에서 실패일뿐만 아니라 모두 시간초과가 뜬다;;
import collections def solution(participant, completion): answer = collections.Counter(participant) - collections.Counter(completion) return list(answer.keys())[0]
Counter 끼리 -를 이용하여 값을 알아낼 수 있다.
ex)
participant =Counter({'marina': 2, 'josipa': 1, 'nikola': 1})
completion = Counter({'marina': 1, 'josipa': 1, 'nikola': 1})
collections.Counter(participant) - collections.Counter(completion) =
Counter({'josipa': 1})
def solution(participant, completion): participant.sort() completion.sort() for p,c in zip(participant, completion): if p != c: return p return participant.pop()
예)
participant = ["marina", "josipa", "nikola"]
completion = ["marina", "josipa"]
for p,c in zip(participant, completion): if p != c: return p
p와 c의 결과값
p c marina marina josipa josipa
즉, p와 c가 모두 같으므로 participant의 마지막 값이 정답이다.
return participant.pop()
예)
participant = ["marina", "josipa", "nikola", "marina"]
completion = ["marina", "josipa","nikola"]
p와 c의 결과값
p c marina marina marina josipa josipa nikola
marina가 중복이므로 p의 marina 와 jospia가 맞지 않다.
marina인 p값을 반환한다.