-
[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