사용 언어 - Python3
문제 - 완주하지 못한 선수
정답
시간초과 => 해시 사용하기 (정답 맞춘 여부 X)
# 방법1 시간초과
def solution(participant, completion):
answer = ''
for p in participant:
if p in completion:
completion.remove(p)
else:
answer += p
return answer
# 방법2 시간초과
def solution(participant, completion):
answer = ''
key = []
value = []
for p in participant:
pnum = participant.count(p)
cnum = completion.count(p)
if pnum != cnum:
num = pnum-cnum
if p not in value:
key.append(num)
value.append(p)
for i in range(len(key)):
answer += key[i]*value[i]
return answer
hash 사용하기
1. dictionary의 key, value 처럼 hashDict에 {hash(p),p}를 저장한다.
2. sumHash로 hash(p) 값을 다 더했다가 hash(c) 값을 다 빼면 나머지 완주하지 못한 해쉬값만 남는다.
3. hashdict[sumHash]
# 정답 = hash 해시 사용
def solution(participant, completion):
hashDict = {}
sumHash = 0
for p in participant:
hashDict[hash(p)] = p
sumHash += hash(p)
for c in completion:
sumHash -= hash(c)
return hashDict[sumHash]
레퍼런스
- 해시 설명
- 정답 깃허브
'Algorithm > 해시' 카테고리의 다른 글
[프로그래머스 lv 3] 베스트앨범 (0) | 2023.12.04 |
---|---|
[프로그래머스 lv 2] 의상 (2) | 2023.12.04 |
[프로그래머스 lv 2] 전화번호 목록 (0) | 2023.12.04 |
[프로그래머스 lv 1] 폰켓몬 (0) | 2023.05.29 |
댓글