[해시] 전화번호 목록

박고은·2023년 5월 24일
0

def solution(phone_book):
    answer = True
    phone_book.sort()
    
    for i in range(len(phone_book)-1):
        if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
            answer = False
            break
        
    return answer



딕셔너리 활용한 코드

def solution(phone_book):
    answer = True
    phone_book.sort()
    p_book = dict(zip(phone_book, range(1, len(phone_book))))

    for k in p_book.keys():
        if k == phone_book[p_book[k]][:len(k)]:
            answer = False
            break

    return answer

문자열 배열로 주어지므로 sort를 하게 되면 같은 앞부분을 가진 문자열 순서로 정렬
정렬 결과, 현재 문자열과 가장 일치하는 문자열은 다음 문자열
현재 문자열의 길이만큼의 다음 문자열이 현재 문자열과 일치하지 않는다면 이 문자열을 접두사로 하는 문자열은 배열에 없는 것으로 판단하여 break

0개의 댓글