CodingTest/programmers
[프로그래머스/Programmers] 전화번호 목록 - Python
ukunV
2021. 9. 21. 00:00
Link
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조
programmers.co.kr
Solution
해당 문제는 이중 for문을 사용하면 절대 효율성 테스트를 통과할 수 없다. 이에 zip()을 사용하여 for문 하나로 효율성 테스트를 통과하였다.
def solution(phone_book):
if len(phone_book) == 1:
return True
phone_book.sort()
for i, j in zip(phone_book, phone_book[1:]):
if i == j[:len(i)]:
return False
return True
```python
🔑 key point: zip()
Other Solution
startswith()는 이 문제의 다른 풀이들을 보며 처음 알게 되었다. startswith()의 사용법을 확인하고 지나가기 바란다.
def solution(phone_book):
phone_book.sort()
for p1, p2 in zip(phone_book, phone_book[1:]):
if p2.startswith(p1):
return False
return True
🔑 key point: zip()
📌 Tip: startswith()