프로그래밍 공부방

[프로그래머스] 해시_전화번호 목록 본문

프로그래밍/프로그래머스

[프로그래머스] 해시_전화번호 목록

김갱갱 2022. 1. 4. 01:53

프로그래머스 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

def solution(phone_book):
    answer = True
    phone_book.sort()
         
    for num in range(len(phone_book)-1):
        if phone_book[num+1].find(phone_book[num]) == 0:
            answer = False
            break
                
    return answer

우선 phone_book을 sort()로 정렬한다.

그러면 값들이 정렬이 되어 ex) "119" "1195524421" 이런 순으로 정렬이 된다.

따라서 빠른 비교가 가능해진다.

 

이미 정렬이 된 상태이기 때문에!

phone_book에서 0번 인덱스와 1번 인덱스 / 1번 인덱스와 2번 인덱스 이런 식으로 2개씩 비교를 하게 한다.

나의 경우에는 두 번째로 나오는 값 안에 첫 번째 값이 들어있다면 answer가 false가 되도록 했다.

문제에서 준 조건이 한 번호가 다른 번호의 접두어인 경우이기 때문에 find를 한 값이 0일 때로 설정을 했다.

 

break를 사용해서 정답을 찾으면 반복을 바로 끝내도록 했다.