프로그래머스 #42577. 전화번호 목록: 해쉬/lv2

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42577

🔍 Inspection

문제 접근(문제 분석 → 풀이 아이디어)

풀이 아이디어는 2가지이다

  1. 이중 for 문으로 서로 접두어 관계인지 확인하는 알고리즘
  2. 해시맵으로 리스트를 저장하고, 접두어를 확인하는 방법

🚩 FLOW

코드를 풀이할 때 적었던 플로우가 있나요?

  1. 글자수로 정렬하기

  2. key = phone_number 요소 인 해쉬맵 생성하기

    value = 1

  3. 반복문으로 phone num 탐색하면서 앞의 한 글자씩 hashmap의 key임을 확인함

🚩제출한 코드[다른사람 풀이 참고]

def solution(phone_book):
    answer = True
    #1. 글자수로 정렬하기
    phone_book = sorted(phone_book , key = lambda x : (len(x)))
    #2. key = 전번인 해쉬맵 생성
    hash_map = {}
    for phone in phone_book : 
        hash_map[phone] = 1
    #3. hashmap에 접두어 비교하기
    for phone in phone_book : 
        tmp = ""
        # 접두어 한 글자씩 추가해서 hasp_map의 key들 중에 같은게 있는지 확인
        for n in phone : 
            tmp += n
            if tmp in hash_map and tmp!= phone : 
                answer = False

                
                
            
        
    return answer