Algorithm/프로그래머스

[프로그래머스] 전화번호 목록 - 파이썬

potato_pizza 2024. 6. 19. 16:40
728x90

전화번호 목록

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

 

프로그래머스

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

programmers.co.kr

 

문제

코드

  • sort()를 활용한 간단한 풀이
  • loop를 돌면서 뒤 번호와 동일한 길이만큼 비교
def solution(phone_book):
    phone_book.sort()
    for i in range(len(phone_book)-1):
        if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
            return False
    return True
  • 해시를 활용한 풀이
  • hash_map 딕셔너리에 저장
  • 각 전화번호를 한 문자씩 증가시키면서 'temp' 변수에 저장하고, 이 'temp'가 해시맵에 존재하는지 확인합니다. 만약 'temp'가 해시맵에 있고 'temp'가 현재 전체 전화번호('phone_number')와 같지 않다면, 다른 전화번호의 접두어라는 의미이므로 False 반환
def solution(phone_book):
    answer = True
    hash_map = {}
    for phone_number in phone_book:
        hash_map[phone_number] = 0
    
    for phone_number in phone_book:
        temp = ""
        for number in phone_number:
            temp += number
            
            if temp in hash_map and temp != phone_number:
                answer = False
    return answer
728x90
반응형