반응형
문제
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)' 카테고리의 다른 글
10814번, 10989번 (0) | 2020.10.22 |
---|---|
최소값 최대값 찾기 (0) | 2020.10.07 |
1003번: 피보나치 함수 - 동적계획법 (0) | 2020.07.19 |