아이공의 AI 공부 도전기

[프로그래머스]  Level 2 : 전화번호 목록 (Python)

 

     

 

 

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

 

프로그래머스

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

programmers.co.kr

 

코드 링크

https://github.com/stellaluminary/Programmers

 

GitHub - stellaluminary/Programmers

Contribute to stellaluminary/Programmers development by creating an account on GitHub.

github.com

 

 

Python

 

방법 1 

 

$O(N^2)$를 가지므로 효율성에서 문제가 생긴다.

 

"""
Method 1

정확성 테스트 : 83.3 (all)
효율성 테스트 : 8.3

91.7/100
"""


def solution(phone_book):
    answer = True
    phone_book.sort(key=len)

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

    return answer

 

방법 2 

 

숫자 문자열에 대한 정렬을 진행한 후 전후에 따른 시작 문자열을 판단한다.

 

 

def solution(phone_book):
    phone_book.sort()
    for i,e in zip(phone_book, phone_book[1:]):
        if e.startswith(i):
            return False
    return True

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading