💡 나의 접근 방법
해시 딕셔너리를 이용해 접근하는 문제임을 알고 시작하였다.
1. 동명이인의 경우, 그 사람이 정답이 됨.
2. 동명이인이 없는 경우, completion에 없는 사람이 정답이 됨.
이렇게 동명이인의 경우를 나눠서 생각하였다.
- 틀린 코드
def solution(participant, completion):
answer = ''
# dic = {}
dic = {key:1 for key in completion}
for i in participant:
if i in dic.keys(): #해시에 있는 경우
dic[i] -= 1
else: #해시에 없는 경우
answer = i
return answer
else:
for key,value in dic.items():
if value == -1: #동명이인은 -1가 2번 되어 -1이 됨
answer = key
return answer
✨ 정답 코드
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]
sumhash에 수를 합하여 나머지 남는 수가 딕셔너리에 존재하지 않는 값임을 확인할 수 있다.
hash(값) 을 이용해 해시 함수를 만들 수 있음을 알게 되었다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️ 오류가 있을 경우, 댓글로 알려주세요.