공부/코딩테스트

[프로그래머스] 전화번호 목록(파이썬)

ghhong 2022. 1. 13. 14:27

나의 답 :

def solution(phone_book):
    phone_book.sort()
    l=["12","13","1412"]
    l.sort()
    print(l)
    for i in range(len(phone_book)-1):
        if phone_book[i] == phone_book[i+1][0:len(phone_book[i])]:
            #대박 in으로 찾았는데 다른 곳에 있을 수도 있어서 틀린 답임 ;;;;;
            #예를들면 '13', 1413' 이면 접두사에는 없는데 있긴 있음
            return False
    return True

해쉬문젠데 이게 복잡도 덜 잡아먹긴 함

 

같은 유형 다른 답 :

def solution(phoneBook):
    phoneBook = sorted(phoneBook)

    for p1, p2 in zip(phoneBook, phoneBook[1:]):
        if p2.startswith(p1):
            return False
    return True

복잡도 같음

 

해시 답 :

def solution(phone_book):
    answer = True
    hash_map = {}
    for phone_number in phone_book:
        hash_map[phone_number] = 1
    for phone_number in phone_book:
        temp = ""
        for number in phone_number:
            temp += number
            if temp in hash_map and temp != phone_number:
                answer = False
    return answer