-
반응형
1. 생각 정리
- 완주를 못한 사람은 무조건 한 명 존재
- participant 리스트의 길이 = completion 리스트의 길이 +1
2. 성공 코드(리스트 sort를 통한 방법)
- 일단 participant, completion 리스트를 정렬한 뒤 쭉 비교
- 비교하다 같은 인덱스에 있는 값이 다르면 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] #무조건 완주 못한 사람은 한명 있고, participant의 길이가 completion의 길이보다 1 크기 때문
3. 성공 코드(해시값을 활용)
- 다른 분들의 풀이를 보다 제가 생각지도 못한 방법이라 정리
- participant 정보를 딕셔너리에 (hash(participant) : participant) 느낌으로 넣어두며 hashval에 모든 해시값의 합을 저장
- completion 리스트를 한 바퀴 돌며 hashval에 모든 completion 요소들에 대한 해시값을 하나씩 빼주면
- 결국 completion에 없는 participant 요소에 대한 해시값만 남게 됨
#completion의 길이는 participant의 길이보다 1 작습니다. #participant의 모든 해시값의 합 - completion의 모든 해시값의 합 = 완주하지 못한 사람의 해시값 import collections def solution(participant, completion): d = dict() hashval = 0 for p in participant: d[hash(p)] = p hashval += hash(p) for c in completion: hashval -= hash(c) return d[hashval]
반응형'IT > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 해시 > 위장(Python) (0) 2021.10.14 댓글