https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
1. hash
def solution(participant, completion):
hashDict = {}
sumHash = 0
# participant list의 hash 값으로 hashDict를 구하고 sumHash를 구함
for part in participant:
hashDict[hash(part)] = part
sumHash += hash(part)
# completion list의 hash 값을 뺌
for comp in completion:
sumHash -= hash(comp)
# 빼고 남은 값이 완주하지 못한 선수의 hash 값이 됨
return hashDict[sumHash]
2. sort/loop
def solution(participant, completion):
# list sorting
participant.sort()
completion.sort()
# completion list의 length만큼 반복
for i in range(len(completion)):
# participant[i] != completion[i]인 경우
if participant[i] != completion[i]:
# participant[i]가 completion에 없으므로 완주하지 못한 사람
return participant[i]
# 다 반복해도 return하지 않은 경우
# 제일 마지막 주자가 완주하지 못한 경우이므로
# participant의 제일 마지막 요소 return
return participant[len(participant) - 1]
'programmers > Python' 카테고리의 다른 글
[programmers] 큰 수 만들기 / Python (0) | 2022.07.06 |
---|---|
[programmers] 가장 큰 수 / Python (0) | 2022.07.04 |
[programmers] 체육복 / Python (0) | 2022.07.04 |
[programmers] 직사각형 별찍기 / Python (0) | 2022.07.04 |