본문 바로가기

알고리즘/프로그래머스 문제풀이

프로그래머스 전화목록(python)

728x90

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

 

프로그래머스

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

programmers.co.kr

문제접근

  • 전화목록부에 있는 번호가 다른 번호의 접두어인 번호가있는지 파악하는 문제
  • 단순히 for문 여러개를 겹치면 되겠지만 제한사항이 높아 시간초과가 남
  • hash를 사용하여 메모리를 이용해 시간복잡도를 줄이는 문제인듯

 

정답코드

def solution(phone_book):
    #hash를 사용하여 temp로 중간중간 저장
    answer = True
    dic = {}
    for i in phone_book:
        dic[i] = 1
    for i in range(len(phone_book)):
        temp = ""
        for j in range(len(phone_book[i])):
            temp += phone_book[i][j]
            if temp in dic and temp != phone_book[i]:
                return False
    return answer