1) 부르트 포스
접두사가 같은게 하나라도 발생하면 False이므로 이것을 검사하여 걸리면 바로 break한다.
def solution(phone_book):
answer = True
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):
if phone_book[j].find(phone_book[i]) == 0 or phone_book[i].find(phone_book[j])== 0:
answer=False
break
return answer
2) sort하면 for문을 한번만 거치고 짧은 거 기준으로만 비교하면 된다.
def solution(phone_book):
answer = True
phone_book = sorted(phone_book)
for p1, p2 in zip(phone_book, phone_book[1:]):
if p2.find(p1) == 0:
answer=False
break
return answer
def solution(phone_book):
answer = True
phone_book = sorted(phone_book)
for p1, p2 in zip(phone_book, phone_book[1:]):
if p2.startswith(p1):
answer=False
break
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스/Python] 완주하지 못한 선수(해쉬) (0) | 2020.12.16 |
---|---|
[프로그래머스/Python] 소수찾기(소수/순열/중복제거) (0) | 2020.12.16 |
[프로그래머스/C++] 가장 큰 수(정렬) (0) | 2020.12.12 |
[프로그래머스/C++] 이진 변환 반복하기(진법 변환) (0) | 2020.12.11 |
[프로그래머스/C++] N진수 게임(진법 변환) (0) | 2020.12.10 |