본문 바로가기

Algorithm

[Algorithm] 프로그래머스 전화번호 목록 python

반응형

풀이

  • phone_book 정렬하기
  • 현재 전화번호를 바로 다음 번호와 비교한다.
  • 그 값이 같다면, 다음 번호가 현재 번호를 접두사로 가지고 있다는 뜻이다.

 

Q. 현재 값과 다음 값의 비교만으로도 가능한 이유는?

A. 정렬을 하는 순간 인접한 번호들끼리 비슷(?)해지기 때문이다.

 

놓지고 있던 것이 바로 숫자로 이루어진 문자열의 정렬 후 결과였다.

phone_book = ["119", "97674223", "1195524421"]
phone_book.sort()
print(phone_book) //["119", "1195524421", "97674223"]

-> 아스키 코드 기반으로 정렬되기 때문에 119552442197674223앞에 있다.

 

소스코드

def solution(phone_book):
    phone_book.sort()

    for i in range(len(phone_book)-1):
        size = len(phone_book[i])
        if(phone_book[i] == phone_book[i + 1][:size]):
            return False
    return True

 

🤐 사족

알고리즘 풀 때 주요 언어를 c++로 푸는데, 문자열이나 해시 문제는 python이나 javascript로 연습해야겠다 싶어서 python으로 풀었다. 너무 오랫만에 보니까 간단한 문법조차 헷갈렸지만, 역시 간편하다!

 

아 그리고 해시 문제로 명시되어 있어, 해시 풀이를 찾아봤지만 크게 와닿지 않아 가져오지 않았다.

반응형