본문 바로가기

STUDY/Python

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

728x90

[나의 솔루션]

def solution(phone_book):
    answer = []

    for num in phone_book:      
        phone_book.remove(num)
        for n in phone_book:
            if n.find(num) == -1:
                answer.append('True')
            else:
                answer.append('False')
        phone_book.append(num)
    
    if 'False' in answer:
        return False
    else: 
        return True

테스트 결과 3개의 테스트 케이스를 통과하였다.

그러나, 제출 후 체점하기를 하니.... 완전 난리났다..

효율성 문제에서도.. ㅜㅜㅜ

 

[다른 사람 코드]

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:
                answer = False
    return answer

[다른 사람 코드]

ef solution(phoneBook):
    phoneBook = sorted(phoneBook)

    for p1, p2 in zip(phoneBook, phoneBook[1:]):
        if p2.startswith(p1):
            return False
    return True
728x90