PS/Python
[PYTHON] 프로그래머스 #42577 전화번호 목록
yoo.o
2020. 3. 7. 03:32
반응형
문제
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조��
programmers.co.kr
나의 풀이
sort(key=len)을 통해 길이가 짧은 애들부터 정렬하고, 가장 짧은애의 길이를 기준으로 해시값이 같은지 확인했다
첫 시도라 효율성에서 걸릴줄 알았는데 놀랍게도 만점으로 통과..
def solution(phone_book):
phone_book.sort(key=len)
for i in range(len(phone_book) - 1):
index = i + 1
while index < len(phone_book):
if hash(phone_book[i]) == hash(phone_book[index][:len(phone_book[i])]):
return False
index += 1
return True
다른 풀이
해시를 꼭 사용하지 않아도 되는 풀이가 있었다. str.startswith()를 사용하는 풀이
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
반응형