Algorithm/1일 1코테

[🥲 프로그래머스] 전화번호 목록 - hash

대인보우 2021. 7. 22. 20:47
반응형

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

 

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

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

 

✅ 내가 푼 풀이

# 시간 초과
def solution(phone_book):
    phone_book.sort() # 시간단축을 위한 정렬
	
    for i, v in enumerate(phone_book):
        for j in range(i+1, len(phone_book)):
            if phone_book[j].startswith(v): # v로 시작하면 false
                return False
    return True

 

✅ 다른 사람 풀이

def solution(phone_book):
    answer = True
    hash_map = {}
    
    for phone_number in phone_book:
        hash_map[phone_number] = 1
        
    for phone_number in phone_book:
        temp = ""
        for number in phone_number:
            temp += number
            if temp in hash_map and temp != phone_number: # 본인이 아니면서 hash_map에 있으면
                answer = False
                
    return answer
def solution(phone_book):
    phone_book.sort()
    for i, j in zip(phone_book, phone_book[1:]):
        if j.startswith(i):
            return False
    return True

 

반응형