하루에 하나-3

정인창·2021년 9월 16일
0

코딩테스트 연습

목록 보기
3/19

def solution(participant, completion):
    d = dict()
    hashValue = 0
    for p in participant:
        d[hash(p)] = p
        hashValue += hash(p)
    for c in completion:
        hashValue -= hash(c)
    return d[hashValue]
  • Python의 hash 함수를 이용
  • 누적된 hash value를 key로 dictionary를 생성했고 value와 각 참가자의 이름을 매핑
  • 완주자의 각 원소의 해시값을 누적. 해시값에서 계속 빼주면서 완주자를 하나씩 빼주는 것
  • 결국 누적 합에서 완주자에 있는 모든 원소의 해시 값을 빼주면 완주를 못한 사람의 hash value가 남아있음
  • 누적 차 hash value를 넣어 완주하지 못한 이름을 return!
  • 원래는 완주자 리스트를 for문을 돌려 참가자에서 하나씩 .remove 했는데
    remove 함수는 원소를 하나씩 다 대조해보고 맞으면 삭제하는거라서 비효율적. 그래서 정렬을 해서 검색을 편리하게 하려 했지만 이 마저도 효율성이 떨어짐. 정확성은 100%지만. 빠른 검색에 이용되는
    hash table(dictionary)와 hash function을 이용.
profile
Data science

0개의 댓글