10/25 완주하지 못한 선수
https://school.programmers.co.kr/learn/courses/30/lessons/42576
내 풀이.
def solution(participant, completion):
hashDict = {}
sumHash = 0
for part in participant :
hashDict[hash(part)] = part
sumHash += hash(part)
for comp in completion :
sumHash -= hash(comp)
return hashDict[sumHash]
예를들어,
participant = [‘a’, ‘b’, ‘c’]
completion = [‘a’, ‘b’]
라고 가정하면,
hashDict = {100 : ‘a’, 200 : ‘b’, 300 : ‘c’}로 임의의 key값이 매핑됐다고 하자.
그러면 sumHash = 600이 되고,
sumHash에서 completion 원소의 key값을 뺀다면, 한명의 완주하지 못한 선수의 해쉬값이 나온다. 이 key값의 value가 바로 완주하지 못한 선수이다.
sumHash = 600 - hash(‘a’) - hash(‘b’) = 300
따라서 완주하지 못한 선수는 C이다.
다른 사람의 풀이
import collections
def solution(participant, completion) :
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
프로그래머스 사이트에서는 해시문제로 분류돼있긴 하지만, 실제 코딩테스트에서는 이런 문제 분류가 없으므로 자유롭게 풀 수 있겠다.
댓글남기기