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()