def solution(phone_book):
answer = True
hash_map = {} #딕셔너리 변수 선언
for phone_number in phone_book:
hash_map[phone_number] = 1 #key값으로 phone_number를 value로 1을 주었다.
for phone_number in phone_book:
temp = "" #접두사를 저장하는 temp
for number in phone_number:
temp += number #phone_number글자 하나하나를 temp에 저장함
if temp in hash_map and temp != phone_number:
#만약 접두어가 hashmap에있고 접두어와 폰넘버와 완전히 일치하는게 아니라면
answer = False #false 출력
return answer
원래 썼던 코드 효율성 오류
haspmap은 데이터 저장/읽기 속도가 빠르다는 장점이 있다. 그래서 phone_book의 내용을 hashmap에 넣어줬다.
phone_book = ["58", "5889", "6457"]
answer = True
for phone_number in phone_book:
temp = "" #접두사를 저장하는 temp
for number in phone_number:
temp += number #phone_number글자 하나하나를 temp에 저장함
print(temp)
if temp in phone_book and temp != phone_number:
#만약 접두어가 hashmap에있는 수에 있고 접두어와 폰넘버와 완전히 일치하는게 아니라면
answer = False #false 출력
print(answer)
Hash Table의 장점 및 단점은 ?
장점
데이터 저장/읽기 속도가 빠르다. (검색 속도가 빠르다.)
해쉬는 키에 대한 데이터가 있는지(중복) 확인이 쉬움
단점
일반적으로 저장공간이 좀더 많이 필요하다.
여러 키에 해당하는 주소가 동일할 경우 충돌을 해결하기 위한 별도 자료구조가 필요함
주요 용도
검색이 많이 필요한 경우
저장, 삭제, 읽기가 빈번한 경우
캐쉬 구현시 (중복 확인이 쉽기 때문)
list의 어떤 자료를 검색할 때 드는 시간복잡도 O(n)
Hash Table의 자료를 검색할 때 드는 시간복잡도 O(1)