이 문제는 전화번호들을 배열로 준 뒤에,
어떠한 전화 번호가 다른 전화번호의 시작 부분과 일치하는 경우가 하나라도 있으면 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