SW/알고리즘

파이썬 : 프로그래머스 : 전화번호목록 : 풀이

얇은생각 2019. 8. 21. 12:30
반응형

풀이

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

 

 

 

실행 결과

정확성 테스트

테스트 1 통과 (0.04ms, 10.8MB)
테스트 2 통과 (0.04ms, 10.7MB)
테스트 3 통과 (0.04ms, 10.7MB)
테스트 4 통과 (0.04ms, 10.7MB)
테스트 5 통과 (0.06ms, 10.7MB)
테스트 6 통과 (0.04ms, 10.7MB)
테스트 7 통과 (0.04ms, 10.7MB)
테스트 8 통과 (0.04ms, 10.7MB)
테스트 9 통과 (0.05ms, 10.6MB)
테스트 10 통과 (0.04ms, 10.6MB)
테스트 11 통과 (0.04ms, 10.7MB)

효율성 테스트

테스트 1 통과 (3.08ms, 15.3MB)
테스트 2 통과 (3.11ms, 15.3MB)

채점 결과

정확성: 84.6

효율성: 15.4

합계: 100.0 / 100.0

 

 

 

 

해설

우선 정렬을 실행합니다. 문자열은 크기대로 잘 정렬이 됩니다. 따라서 같은 접두사가 있는 경우에는 앞뒤로만 존재하게 됩니다. 이 부분이 잘 이해가 되지 않을 수 있습니다. 실제로 출력을 해보면서 값을 비교해보면 다음과 같이 쉽게 풀리는 것을 확인 할 수 있습니다. 실제 이중포문을 돌려서도 해결을 할 수 있습니다. 하지만 정렬을 하면 하나의 포문만으로 문제를 해결 할 수 있었습니다. 직관적으로 해결하기보다 이러한 방식으로 해결할 방법이 있을 지에 대해 고민을 꾸준히 해보아야 할 것 같습니다.

반응형