ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] 완주하지 못한 선수
    [+] 알고리즘 [+] 2020. 3. 9. 23:56

     

     

    [문제 설명]

     

    수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.

    마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

     

     

    [풀이 과정]

     

    프로그래머스의 가장 푼 사람 수가 많은 문제다. 메이플로 치자면 빨간 달팽이 정도인듯하다.

    내용을 들여다 보아도 확실히 간단한 탐색&비교로 풀 수 있는 수준이다.

    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]

    하지만 이게.... 문제가 왜 해시로 분류되어있는가..?  '참가자 중에는 동명이인이 있을 수 있습니다.'라는 조건 때문인건가...? 으음... 혼란스럽다...

     

    [또 다른 풀이]

     

    다른 분들의 풀이를 찾아보니. 정말로 해시를 사용하여 푸신 분이 있었다. 해쉬 구조에 해쉬 함수까지? 사용하셨다. 

    def solution(participant, completion):
        answer = ''
        temp = 0
        dic = {}
        for part in participant:
            dic[hash(part)] = part
            temp += int(hash(part))
        for com in completion:
            temp -= hash(com)
        answer = dic[temp]
    
        return answer

    '[+] 알고리즘 [+]' 카테고리의 다른 글

    [Programmers] 멀쩡한 사각형  (0) 2020.03.20
    [Programmers] 종이접기  (0) 2020.03.18
    [Programmers] 방문 길이  (0) 2020.03.12
    [Programmers] 정수 삼각형  (0) 2020.03.10
    [Programmers] 최고의 집합  (0) 2020.03.10

    댓글

Designed by Tistory.