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]

 

+ Recent posts