[프로그래머스] 전화번호 목록 - startswith

zunzero·2022년 8월 28일
0

알고리즘(파이썬)

목록 보기
42/54

https://school.programmers.co.kr/learn/courses/30/lessons/42577

어렵지 않다고 생각한 문제이다.
접두사의 의미를 헷갈려서 푸는데에 시간이 조금 걸렸다.

접두어 관계인 숫자가 포함되어 있으면 False를, 포함되어 있지 않으면 True를 반환해야 한다.
접두어 관계의 의미가 '포함'인줄 알았는데, "어떤 단어(어근)의 앞에 붙어 ~" 라는 뜻이었다.
그래서 파이썬의 startswith 메서드를 활용했다.

def solution(phone_book):
    # for num1 in phone_book:
    #     for num2 in phone_book:
    #         if num1 == num2:
    #             continue
    #         else:
    #             if num1 in num2 or num2 in num1:
    #                 return False
    # return True

    # for i in range(len(phone_book)):
    #     for j in range(i):
    #         if phone_book[i] in phone_book[j] or phone_book[j] in phone_book[i]:
    #             return False
    # return True

    phone_book.sort()
    # for i in range(len(phone_book)):
    #     for j in range(i):
    #         if phone_book[i].startswith(phone_book[j]):
    #             return False
    # return True

    for p1, p2 in zip(phone_book, phone_book[1:]):
        if p2.startswith(p1):
            return False
    return True
    

1, 2번째 주석으로 적힌 코드는 내가 접두어의 의미를 헷갈렸을 때 작성한 코드이고,
3번째 주석으로 적힌 코드는 시간초과 판정이 났는데 정확한 이유는 모르곘다... ㅜㅜ

profile
나만 읽을 수 있는 블로그

0개의 댓글