Python

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

정호나 2024. 12. 7. 15:37

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

1. sort함수, loop

def solution(phone_book):
    
    phone_book.sort()
    for i in range(len(phone_book)-1):
        if(phone_book[i+1].startswith(phone_book[i])):
            return False
    return True

 

string1.startswith(string2)

-> string1이 string2로 시작되는지(string2가 string1의 접두어인지)

 

 

2. hash 함수 사용

# case2 해쉬함수 사용

def solution(phone_book):
    
#     1. hash map 만들기
    hash_map = {}
    for num in phone_book:
        hash_map[num] = 1
        
        
# 2. 접두어가 hash map에 존재하는지 찾는다
    for num in phone_book:
        prefix = ""
        for n in num:
            prefix += n
            
#             3. 접두어를 찾아야 한다(기존 번호와 같은 경우 제외)
            if prefix in hash_map and prefix != num:
                return False
    return True

 

- hashmap

key - value 쌍 관리하는 클래스

key : num

value: 1

 

 

 

 

 

 

3. 참고

 

https://coding-grandpa.tistory.com/86

 

[프로그래머스] 전화번호 목록 문제 풀이(해시 Lv. 2) - 파이썬 Python

0. 동일 유형 문제 [프로그래머스] 완주하지 못한 선수 (해시 Lv. 1) [프로그래머스] 전화번호 목록 (해시 Lv. 2) [프로그래머스] 위장 (해시 Lv. 2) [프로그래머스] 베스트 앨범 (해시 Lv. 3) Youtube 영상으

coding-grandpa.tistory.com

 

 

'Python' 카테고리의 다른 글

리스트 컴프리헨션  (0) 2024.10.02