본문 바로가기
알고리즘/Python

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

by 조이은 2023. 7. 1.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Level 2. 전화번호 목록

 

 

접근 방식
1. phone_book 원소를 정렬한다.
2. phone_book-1 길이만큼 반복문을 돌면서, 문자열 슬라이스를 이용하여 현재 인덱스와 그 다음 인덱스의 문자열     접두사가 일치하는지 확인한다. 

 

 

1. 처음 코드

def solution(phone_book) :
    for i in phone_book :
        count = 0
        
        for j in range(len(phone_book)) :
            
            if i==phone_book[j][:len(i)] :
                count+=1
            
            if j == len(phone_book)-1 :
                if count == 2:
                    return False
            
    return True

정확성은 맞는데, 효율성에서 맞지 않았다. for문을 두번이나 반복하는 것이 문제라고 생각되어 다시 작성하였다. 

 

2. 최종 코드

def solution(phone_book):
    answer = True

    phone_book.sort()

    for i in range(len(phone_book) - 1):
        if phone_book[i] == phone_book[i + 1][:len(phone_book[i])]:
            answer = False
            break
    return answer

생각보다 간단한 코드였다... 

위의 코드와도 거의 흡사하지만 다른 것은 sort를 해야한다는 것이다.