본문 바로가기

Coding Test/Programmers

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

728x90

나의 풀이

def solution(phone_book):

    phone_book.sort()

    for p in range(len(phone_book)):
        for n in range(p + 1, len(phone_book)):
            if (phone_book[p] != phone_book[n][:len(phone_book[p])]):
                break
            return False

    return True

 

 

startswith을 활용한 풀이

def solution(phoneBook):
    phoneBook = sorted(phoneBook)

    for p1, p2 in zip(phoneBook, phoneBook[1:]):
        if p2.startswith(p1):
            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:
                answer = False
    return answer

 

 

정규 표현식을 활용한 풀이

import re
def solution(phoneBook):

    for b in phoneBook:
        p = re.compile("^"+b)
        for b2 in phoneBook:
            if b != b2 and p.match(b2):
                return False
    return True
반응형