알고리즘 문제풀이(Python)

마라톤 - 해시

coucou3 2021. 2. 9. 22:57
반응형

문제

hsin.hr/coci/archive/2014_2015/contest2_tasks.pdf

 

입력

1. 마라톤에 참여한 선수의 이름 배열

2. 마라톤을 완주한 선수의 이름 배열

 

출력

마라톤에 참여했지만 완주하지 못한 선수의 이름

 

입출력 예

입력 : ["leo", "kiki", "eden"], ["eden", "kiki"]

출력 : "leo"

 

입력 : ["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"]

출력 : "vinko"

 

입력 : ["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]

출력 : "mislav"

 


 

#marathon.py

def solution(participant, completion):
    dic = {}
    for x in participant:
        if x not in dic:
            dic[x] = 1
        else:
            dic[x] += 1

    for x in completion:
        if dic[x] > 1:
            dic[x] -= 1
        else:
            del dic[x]

    for x in dic:
        return x

 

 

다른 사람의 풀이

#counter.py

import collections
def solution(participant, completion):
    dic = collections.Counter(participant) - collections.Counter(completion)
    return list(dic.keys())[0]

collections.Counter는 +, -, == 등이 가능하다.

 

>>> collections.Counter(["josipa", "filipa", "marina", "nikola"])
Counter({'josipa': 1, 'filipa': 1, 'marina': 1, 'nikola': 1})

 

 

#hash.py

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

hash()를 사용한 참신한 방법

 

www.programiz.com/python-programming/methods/built-in/hash

 

Python hash()

Hash values are just integers that are used to compare dictionary keys during a dictionary lookup quickly. Internally, hash() method calls __hash__() method of an object which is set by default for any object. We'll look at this later. The syntax of hash()

www.programiz.com

 

반응형

'알고리즘 문제풀이(Python)' 카테고리의 다른 글

10814번, 10989번  (0) 2020.10.22
최소값 최대값 찾기  (0) 2020.10.07
1003번: 피보나치 함수 - 동적계획법  (0) 2020.07.19