상세 컨텐츠

본문 제목

[프로그래머스] 해시 - 전화번호 목록 (결과 포함)

개발 공부 (알고리즘)

by letprogramming 2021. 8. 21. 20:57

본문

반응형

문자열 리스트에서 한 문자열이 다른 문자열의 앞부분과 일치하는지를 판단하는 문제이다.

해시 문제이지만 딕셔너리를 이요하지는 않았다.

문자열 중에서 하나라도 접두어에 해당한다면 답은 False이다.

 

전화번호 리스트를 정렬한 이유는 반복문을 돌면서 비교를 해야하기 때문이다.

문자열을 정렬하면 앞에 문자를 우선적으로 정렬하기 때문에 A 문자열이 B문자열의 접두어인 경우 B문자열 바로 앞에 A 문자열이 존재하게 된다.

 

예를 들어, '119' 와 '11 9552 4421'을 보면 119가 접두어이다. 두 문자열이 리스트에서 떨어져있었더라도 정렬을 하면 두 문자열이 순서대로 나오게 된다. 전화번호 리스트를 반복문으로 순회하며 바로 뒤에 위치한 문자열과 비교했을 때, 접두어의 관계에 있다면 바로 False를 return 한다.

def solution(phone_book):
    answer = True
    
    phone_book.sort()
    
    for i in range(len(phone_book) - 1):
        if phone_book[i + 1].startswith(phone_book[i]):
            return False
    return answer
반응형

관련글 더보기