Algorithm/Python

[해시] 전화번호 목록

🥭맹2 2021. 4. 30. 22:13

1. 문제

programmers.co.kr/learn/courses/30/lessons/42577

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

2. 접근 방법

해시로 접근하지 않으면 시간초과가 납니다요

3. 코드

python

def solution(phone_book):
    answer = True
    hash = {}
    for phone in phone_book:
        hash[phone] = 1
    for phone in phone_book:
        temp = ""
        for num in phone:
            temp += num
            if temp in hash and temp != phone:
                answer = False
                break
    return answer

4. 마치며

문제 분류가 해시지만 리스트로 접근해보았다. 

그랬더니 당근빠따 시간초과가 났다.

흠 ~!

그래서 찾아본 결과 dict와 list는 탐색하는 경우에 걸리는 시간 복잡도가 각각 O(1), O(n)이었다.

참고한 링크는 다음과 같다.

huidea.tistory.com/6

 

[프로그래머스][hash] 전화번호목록 python (200715)

1. 문제 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접

huidea.tistory.com

gomguard.tistory.com/181

 

[Python] List, Dict 시간 복잡도 (Big O)

시간 복잡도 내가 작성한 코드가 과연 잘 작성한 것일까? 라는 질문에 답변하기 위한 기준은 여러가지가 있습니다. 여러 기준 중에서 시간 복잡도라는 기준이 있습니다. 이 코드는 몇 시간 짜리

gomguard.tistory.com

 

'Algorithm > Python' 카테고리의 다른 글

[해시] 베스트앨범  (0) 2021.05.01
[해시] 위장  (0) 2021.05.01
[해시] 완주하지 못한 선수  (0) 2021.04.30
[백준 11399] ATM  (0) 2021.04.28
[백준 1932] 정수 삼각형  (6) 2021.04.27