daniel7481의 개발일지

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

프로그래머스

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

daniel7481 2022. 7. 20. 22:54
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42577

 

프로그래머스

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

programmers.co.kr

풀이

전형적인 해시 문제이다. 만약 모든 전화번호에 대하여 리스트에 저장한 다음에 탐색하며 비교했다면 당연히 시간초과가 나왔을 것이다. 사실 해시를 공부하고 다른 언어로 해시를 구현한 것을 봤을 때, 굉장히 복잡하다고 생각했다. 나는 우매하기 때문에 단순히 딕셔너리로 해시를 구현하고는 한다. 이 문제도 마찬가지로 전화번호를 길이 순서(오름차순)으로 정렬한 다음 작은 번호부터 하나씩 탐색하면서 만약 번호가 딕셔너리의 키 값으로 존재하면 False, 아니면 True를 반환했다. 키 값을 이용해서 해싱하면 효율적으로 값을 접근할 수 있다. 딕셔너리는 정말 파이썬의 보물과 같다.

def solution(phone_book):
    answer = True
    dic = dict()
    phone_book.sort(key=lambda x: len(x))
    flag = False
    for pb in phone_book:
        num = ''
        for s in pb:
            num += s
            try:
                dic[num]
                flag = True
                break
            except:
                continue
        if flag:
            break
        else:
            dic[num] = True
    if flag:
        answer = False
    return answer
반응형

'프로그래머스' 카테고리의 다른 글

[프로그래머스]타겟 넘버  (0) 2022.07.21
[프로그래머스]프린터  (0) 2022.07.21
[프로그래머스]빛의 경로 사이클  (0) 2022.07.20
[프로그래머스]수식 최대화  (0) 2022.07.20
[프로그래머스] 튜플  (0) 2022.07.19