[프로그래머스/Python] 전화번호 목록

minj-j·2022년 7월 28일
0

CodingTest

목록 보기
5/14

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)

https://wikidocs.net/154782

profile
minj-j`s Development diary!

0개의 댓글