알고리즘/프로그래머스

[알고리즘 고득점 kit/해시] 전화번호 목록

_jju 2026. 4. 28. 16:58

익숙해서 보니 전에 백준으로 풀었던 문제였다. 

다만 전에는 list 이중 for문 돌리면서 startswith() 쓰는 방식으로 구현했는데
아마 그렇게 하면 너무 오래 걸릴 것 같고 여기선 해시 딕셔너리를 쓰는 방식으로 구현해야 할 것 같다. 

 

일단 key에 전화번호를 모두 저장해두고 한개의 키마다 그 키의 조각을 자기자신으로 하는 키가 있는지 확인해볼 예정이다.

예를 들어 11934324의 경우 ch = 1, ch = 11, ch = 119 이런식으로 붙여가며 딕셔너리에 있는지 확인하는 것

def solution(phone_book):
    answer = True
    p_dict = {}
    
    for num in phone_book:
        p_dict[num] = 0
    
    for num in p_dict:
        ch = ""
        for c in num:
            ch += c
            if ch in p_dict and ch != num:
                return False
    return answer