전화번호 목록

김민석·2021년 3월 2일
0

문제는..

이 문제는 전화번호들을 배열로 준 뒤에,
어떠한 전화 번호가 다른 전화번호의 시작 부분과 일치하는 경우가 하나라도 있으면 false를 리턴하고,
그런 경우가 하나도 없으면 true를 리턴하는 문제다.

나의 풀이는

나는 re 모듈을 이용해서 이중 for문으로 완전 탐색을 진행하였다.

from re import match

def solution(phone_book):
    phone_nums = sorted(phone_book,key=len)
    
    for i in range(len(phone_nums)-1):
        for j in range(i+1,len(phone_nums)):
            if match(phone_nums[i], phone_nums[j]):
                return False

    return True

이렇게 하면 쉽게 풀리긴 하지만, 이 문제가 해시 카테고리에 있는 만큼 해시로 풀어 보고 싶었지만 잘 되지 않았다.
따라서, 다른 사람의 풀이를 저장한다.

다른 사람의 풀이

이 방식은 해시로 구현한 것이다.

def solution(phone_book):
    answer = True
    phone_nums = {}
    
    for i in phone_book:
        phone_nums[i] = 1
    
    for number in phone_book:
        temp = ''
        for char in number:
            temp += char
            if temp and temp in phone_nums and temp != number:
                return False
    return True

0개의 댓글