완주하지 못한 선수 찾기 lv1
🌈문제 링크
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def solution(participant, completion):
hashDict = {} # 참가자 목록을 딕셔너리 형태로 저장
sumHash = 0
# sumHash는 participant 리스트의 각 참가자 이름을 해싱해 합을 구하는데 사용
# 0은 해시의 누적된 값을 저장할 공간을 마련해두기 위한 초기값
# 참가자의 sum(hash) 구하기
for part in participant:
hashDict[hash(part)] = part
sumHash += hash(part)
# sumHash = sumHash + hash(part)
# 완주자의 sum(hash) 빼기
for comp in completion:
sumHash -= hash(comp)
# sumHash = sumHash - hash(comp)
# 완주못한자? --> 참가자 - 완주자
# 남은 값이 완주하지 못한 선수의 hash 값이 된다
return hashDict[sumHash]
삽화 예시
★ completion 배열
1
전제조건: 3명 중 2명이 완주 성공이라면 1명은 당연히 실패했습니다.
1
2
3
sumHash는 다합쳐서 35, 여기서 완주한 무시쿵야(5)와 완계쿵야(18)을 뺍시다
sumHash == 17이 우리가 찾는 완주못한 자의 key값입니다.
여기서 HashDict[sumHash] 쓰면 '초밥쿵야'가 답이 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(participant, completion):
answer = ''
# 1. 두 리스트를 정렬
participant.sort()
completion.sort()
# 2. completeion list의 len만큼 participant를 찾아서 없는 사람을 찾읍시다
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
# 3. 맨 마지막이 꼴지고 완주를 못했다.
return participant[-1]
**<설명>**설명>
This post is licensed under CC BY 4.0 by the author.