programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
a = participant.pop()
b = completion.pop()
if a != b:
return a
return participant[0]
해시 유형의 문제지만, 솔루션을 생각해 내지 못해 정렬을 이용해 풀었다.
from collections import Counter
def solution(participant, completion):
answer = Counter(participant) - Counter(completion)
return list(answer.keys())[0]
온라인 코딩테스트에 가장 어울리는 풀이일 듯싶다.
Counter는 정말 유용하다..
def solution(participant, completion):
dic = {}
temp = 0
for part in participant:
dic[hash(part)] = part
temp += hash(part)
for com in completion:
temp -= hash(com)
return dic[temp]
문제의 취지에 가장 잘 맞는 풀이라고 생각한다.
딕셔너리를 활용해 key에 참가자 해쉬값, value에 참가자를 삽입하고 temp에 참가자들의 해쉬값을 전부 더해준다.
이제 temp에서 완주자들의 해쉬값을 빼주면 완주하지 못한 자의 hash값만 나오게 되는데, 이 값을 딕셔너리에 키로 넣어주면 정답이 도출된다.
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스-스택/큐] 다리를 지나는 트럭_파이썬 (0) | 2021.03.15 |
---|---|
[프로그래머스-해시] 베스트앨범_파이썬 ❌⭕ (0) | 2021.03.14 |
[프로그래머스-해시] 위장_파이썬 ❌⭕ (0) | 2021.03.14 |
[프로그래머스-해시] 전화번호 목록_파이썬 ❌❌ (0) | 2021.03.13 |
[프로그래머스-카카오] 다트 게임_파이썬 ❌ (0) | 2021.03.11 |