전화번호 목록 문제 바로가기

나의 풀이

def solution(phone_book):
    phone_book.sort()
    for i in range(len(phone_book)-1):
        if (p:=phone_book[i]) == phone_book[i+1][:len(p)]:
            return False
    return True

고수의 풀이

def solution(phoneBook):
    phoneBook = sorted(phoneBook)

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

CODE REVIEW

  1. 주어진 arr을 sort한 뒤에 두 개씩 짝 지어서 비교하는 방식을 택했다.
  2. 고수의 풀이를 살펴보면, phoneBook과 phoneBook[1:] 리스트를 두 개 만들어놓고 비교하는 방식을 택했다.
  3. startswith() method가 있구나! 잘 안써서 까먹었는데, 이번에 알아두자. 슬라이싱 없이도 확인 가능하게 해주는 유용한 메소드이다.