본문 바로가기

Programming/Programmers

[프로그래머스/Python] 전화번호 목록(효율성)

 

1) 부르트 포스

 

접두사가 같은게 하나라도 발생하면 False이므로 이것을 검사하여 걸리면 바로 break한다.

 

def solution(phone_book):
    answer = True
    
    for i in range(len(phone_book)):
        for j in range(i+1, len(phone_book)):
            if phone_book[j].find(phone_book[i]) == 0 or phone_book[i].find(phone_book[j])== 0:
                answer=False
                break

    return answer

 

2) sort하면  for문을 한번만 거치고 짧은 거 기준으로만 비교하면 된다.

 

def solution(phone_book):
    answer = True
    
    phone_book = sorted(phone_book)
    
    for p1, p2 in zip(phone_book, phone_book[1:]):
        if p2.find(p1) == 0:
            answer=False
            break

    return answer

 

def solution(phone_book):
    answer = True
    
    phone_book = sorted(phone_book)
    
    for p1, p2 in zip(phone_book, phone_book[1:]):
        if p2.startswith(p1):
            answer=False
            break

    return answer