코딩테스트 | python/프로그래머스

[프로그래머스 | python] 전화번호 목록

iemxl 2024. 2. 6. 20:08

def solution(phone_book):
    answer = True
    ph = phone_book.copy()
    for i in phone_book:
        ph.remove(i)
        for k in ph:
            m = min(len(i), len(k))
            if i[:m] == k[:m]:
                answer = False
                break
    return answer

>>시간초과

>>list와 for문을 두개나 써서, remove로 list 탐색으로 인한 시간 소요

 

 

 

def solution(phone_book):
    for x in phone_book:
        temp = ""
        for y in x:
            temp += y #몇 글자가 맞을지 모르니깐 하나씩 더 해봄
            if temp in phone_book and temp != x: #dic에 있으면서 자기 자신은 아닌 것
                return False
    return True

>>시간 초과

>> list와 for문을 두개나 써서, in list 는 in dict보다 시간이 더 걸림

 

 

 

def solution(phone_book):
    dic = {}


    for x in phone_book:
        dic[x] = 0


    for x in phone_book:
        temp = ""
        for y in x:
            temp += y #몇 글자가 맞을지 모르니깐 하나씩 더 해봄
            if temp in dic and temp != x: #dic에 있으면서 자기 자신은 아닌 것
                return False
    return True