알고리즘 공부/고득점kit

[해시]전화번호 목록

에러정리 2021. 9. 3. 17:22

내 풀이

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

 

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

처음에 이렇게 했는데 ["45","43456"] 이렇게 단순 포함되는 경우도 False를 반환하기 때문에 위에처럼 시작 바꿨다

해시를 이용한 다른 풀이

def solution(phone_book):
    answer = True
    hash_map = {}
    temp = ''
    for phone_num in phone_book:
        hash_map[phone_num] = 1
    print(hash_map)

    for phone_num in phone_book:
        temp = ''
        for k in phone_num:
          temp += k
          if temp in hash_map and temp != phone_num:
              answer = False
    return answer