알고리즘 PS/data structure

해시 함수 - 프로그래머스 전화번호 목록

explorer999 2024. 5. 21. 17:28

 

<문제>

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

 

프로그래머스

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

programmers.co.kr

 

 

전화번호부에 적힌 전화번호를 담은 배열이 solution 함수의 매개변수로 주어질 때,
어떤 번호가 다른 번호의 접두어인 경우 false를, 접두어가 아니면 true를 리턴하는 solution 함수.

 

<내 풀이>

def solution(phone_book):
    phone_book_dict = {}  #딕셔너리 생성

    for phone_number in phone_book:  
    	#딕셔너리에 전화번호를 Key값으로, True를 Value값으로 추가
        phone_book_dict[phone_number] = True

    for phone_number in phone_book:
        temp = ""
        for char in phone_number:
        #전화번호의 숫자 하나씩 temp에 넣으면서 key값 중 일치하는 게 있는지 확인한다.
            temp += char  
            #일치하는 키값을 찾았는데, 그게 현재 temp에 추가하고 있는 전화번호와 일치하지 않는다면 현재 전화번호는 현재 temp값을 접두어로 갖는 번호이다. 
            if temp in phone_book_dict and temp != phone_number:
            	#그런 경우가 한번이라도 보이면 False를 리턴한다.
                return False
                
    #모든 전화번호를 확인한 뒤에  접두어가 없으면 True를 리턴한다.
    return True

 

 

 

- 문자열이 이터러블한 객체라는 것을 잊지 말고 잘 활용하자.