문제
내가 작성한 코드 (틀림)
from collections import deque
def solution(phone_book):
phone_book.sort()
phone_book = deque(phone_book)
while phone_book:
book = phone_book.popleft()
if len([i for i in phone_book if book == i[:len(book)]]) != 0:
return False
else:
return True
> 효율성(3, 4)에서 계속 시간초과로 에러가 뜬다...
참고한 코드
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
> 참고 블로그
[프로그래머스/파이썬] (해시) 전화번호 목록
출처전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.구
velog.io
> 알아두어야 할 것
1. startswith() 함수
- 사용법 : str2.startswith(str1 or tuple) 형식
- 반환값 : True / False
- 의미 : str2가 str1으로 시작하면 True 를 아니면 False를 출력하는 함수이다.
2. 문자열을 오름차순 할 때
- 처음에 문자열을 오름차순하는 것을 숫자로 되어있다보니까 숫자 순으로 오름차순되는 것으로 오해해서 이해가 잘 안갔다.
- 하지만, 문자순 오름차순하게 되면 예를 들어 ['12', '123', '568', '88'] 이것을 오름차순하게 되면, ['12', '123', '568', '88'] 이렇게 오름차순으로 정렬이 된다.
- 그러므로 위에 코드가 zip() 함수로 묶어서 진행을 하게되면, 유사한 값끼리 비교를 하게되니까 정답을 추출할 수 있는 것이다.
'Coding > 프로그래머스' 카테고리의 다른 글
[힙] 이중우선순위 큐 with Python (★) (0) | 2022.07.27 |
---|---|
[해시] 베스트앨범 with Python (★) (0) | 2022.07.26 |
[해시] 완주하지 못한 선수 with Python (0) | 2022.07.22 |
[해시] 포켓몬 with Python (0) | 2022.07.22 |
[탐욕법] 구명보트 (★) (0) | 2022.07.21 |