def solution(phone_book):
phone_book.sort()
for i, num in enumerate(phone_book) :
l = len(num)
if num == phone_book[i+1][:l] :
return False
if i == len(phone_book)-2 :
return True
풀이
1. phone_book을 정렬한다. 좀 더 빠르게 파악할 수 있다.
예) ["12","45","56","123","1235","567","88"] 이면 ['12', '123', '1235', '45', '56', '567', '88']으로 정렬된다.
2. for문과 enumerate()를 통해 인덱스(i)와 번호(num)을 받아와 바로 다음(i+1)에 있는 숫자의 접두사이면 False를 반환한다.
3. 마지막 번호 전까지 for문이 돌았다면 마지막 번호는 비교할 필요 없으므로 True를 반환한다.
조금 수정한 코드 (더 빠르다)
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book)-1) :
l = len(phone_book[i])
if phone_book[i] == phone_book[i+1][:l] :
return False
return True
enumerate() 함수 대신 range를 사용했다.
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 뉴스 클러스터링 (0) | 2021.05.28 |
---|---|
[Python] 소수 찾기 (0) | 2021.05.27 |
[Python] 괄호변환 (0) | 2021.05.26 |
[Python] 튜플 (0) | 2021.05.26 |
[Python] 예산 (0) | 2021.05.20 |