풀이방법1. hash
def solution(participant, completion):
dic = {}
res = 0
for part in participant:
dic[hash(part)] = part
res += hash(part)
for com in completion:
res -= hash(com)
ans = dic[res] # key값을 넣은거니까 value값(이름)이 나온다
return ans
hash는 dictionary처럼쓰는데, 실행할때마다 key값에 새로운 숫자를 제공
ex. {1543287362802119979: 'leo', -599470287568687192: 'kiki', -5395674906811354268: 'eden'}
{8023414173644665412: 'leo', -2114411684575497391: 'kiki', 6585220722842758562: 'eden'}
-> 저장된 주소를 알려준다고 생각하면 될듯
풀이방법2. counter
import collections
def cnt(participant, completion):
# ans = collections.Counter(participant) # Counter({'mislav': 2, 'stanko': 1, 'ana': 1})
res = collections.Counter(participant) - collections.Counter(completion) # Counter({'mislav': 1})
return list(res.keys())[0]
Counter()는 dict와 같이 hash형 자료들의 값의 개수를 셀 때 사용
풀이방법3. sort
def use_sort(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
else:
return participant[len(participant)-1]
풀이방법4. zip
def use_zip(participant, completion):
participant.sort()
completion.sort()
pair = list(zip(participant, completion))
# [('ana', 'ana'), ('mislav', 'mislav'), ('mislav', 'stanko')] -> 이런식으로 나오기때문에, sort를 해줘야한다
for p, c in pair:
if p != c:
return p
return participant[-1]
'알고리즘' 카테고리의 다른 글
[programmers] 문자열 다루기 기본 (0) | 2020.07.08 |
---|---|
[programmers] 문자열 내 마음대로 정렬하기 (0) | 2020.07.08 |
[programmers] 주식가격 (0) | 2020.06.30 |
[baekjooon] 5014. 스타트링크 (0) | 2020.06.29 |
[baekjoon] 7569. 토마토 (0) | 2020.06.29 |