[프로그래머스/Python] 해시 - 완주하지 못한 선수
📚 해쉬 구조
키(Key)와 값(Value) 쌍으로 이루어진 데이터 구조
Key를 이용하여 데이터를 찾으므로, 속도를 빠르게 만드는 구조
파이썬
에서는 딕셔너리(Dictionary) 타입이 해쉬 테이블과 같은 구조
기본적으로는, 배열로 미리 Hash Table 크기만큼 생성해서 사용합니다. 공간은 많이 사용하지만, 시간은 빠르다는 장점이 있음
검색이 많이 필요한 경우, 저장, 삭제, 읽기가 많은 경우, 캐쉬를 구현할 때 주로 사용
👍 장점
데이터 저장/검색 속도
가 빠름
해쉬는 키에 대한 데이터가 있는지(중복
)확인이 쉬움
👎 단점
일반적으로 저장공간
이 좀 더 많이 필요
여러 키에 해당하는 주소가 동일할 경우 충돌을 해결하기 위한 별도 자료구조가 필요 (충돌 해결 알고리즘)
⏰ 시간복잡도
일반적인 경우(충돌이 없는 경우): O(1)
최악의 경우(모든 경우에 충돌이 발생하는 경우): O(n)
👩🏻🏫 모범 답안
def solution(participant, completion):
answer = {}
# {'leo': 1, 'kiki': 1, 'eden': 1}
for i in participant:
answer[i] = answer.get(i, 0) + 1
# completion 에 포함되는 이름의 key 의 value 를 -1 한다.
for j in completion:
answer[j] = answer[j] - 1
# participant 에는 있지만 completion 에는 없는 이름만 value 가 1로 남게되니 그것을 리턴한다.
for k in answer:
if answer[k] : return k
✏️ Python 문법
딕셔너리.get('a','Nothing')
dict = { 'a': 2022, 'b': 2023 }
result = dict.get('a','Nothing')
print(result) # 2022
첫 번째 인자로는 찾고자 하는 키를 넣는다.
두 번째 인자로는 첫 번째 인자에서 넣은 키가 없을 때 넣고자 하는 값을 넣는다. (디폴트 값
)
Author And Source
이 문제에 관하여([프로그래머스/Python] 해시 - 완주하지 못한 선수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sugenius77/프로그래머스해시-완주하지-못한-선수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)