[프로그래머스 42577] 전화번호 목록 ❕

코뉴·2022년 3월 2일
0

프로그래머스🍳

목록 보기
6/10

🥚문제링크

https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3


🍳코드

def solution(phone_book):
    phone_book = sorted(phone_book)  # 사전순 정렬

    for i in range(len(phone_book)-1):
        num1 = phone_book[i]
        num2 = phone_book[i+1]
        if num2.startswith(num1):
            return False
    return True

🧂아이디어

  • 처음에는 이중 for문을 이용해서 phone_book[i]가 phone_book[j]의 접두어인지 검사하는 방식으로 코드를 짰다. 정확성 테스트는 통과했으나 효율성 테스트는 통과하지 못했다.
  • 다른 사람들의 풀이를 찾아보다가, 문자열 리스트인 phone_book을 정렬하여 사전순으로 정렬된 리스트로 만드는 아이디어를 배웠다.
    • ['119', '97674223', '1195524421'] --[sort]--> ['119', '1195524421', '97674223']
  • 사전순으로 정렬한 뒤에는, 하나의 for문으로 문제를 풀이할 수 있다.
    • 사전순으로 정렬된 phone_bookphone_book[i]가 다른 단어의 접두사인지 확인할 때는, phone_book[i]와 가장 가까운 phone_book[i+1]phone_book[i]로 시작하는지 확인하면 된다.
    • startswith() 메소드를 사용하여 코드를 짜면 편리하다.
  • 위 아이디어를 통해 효율성 테스트를 통과할 수 있었다.
profile
코뉴의 도딩기록

0개의 댓글

관련 채용 정보