본문 바로가기
프로젝트들/코딩 테스트

[코딩테스트] 프로그래머스 - 전화번호 목록 (Lv.2) in Python

by 코곰 2021. 2. 6.

배열로 주어진 번호들 중 (string으로 주어짐), 한 번호가 다른 번호의 접두어인 경우가 있는지 확인.

 

programmers.co.kr/learn/courses/30/lessons/42577

 

Python으로 구현

def solution(phone_book):  
    phone_book.sort()
 
    lenArray = len(phone_book)
    for i in range(lenArray):
        test = phone_book[i]
        j = 1
        while j < lenArray - i:
            if phone_book[i+j].startswith(test):
                return False
            j += 1
    
    return True

- 먼저 주어진 배열을 오름차순으로 sort한다.

- 완전탐색을 하며, 앞에 오는 숫자가, 뒤에 오는 어떤 숫자의 일부분이면 False를 리턴한다.

 

다른 분들의 풀이

- 해시 혹은 리스트를 이용, 주어진 배열 자체를 복사하여, 한 배열의 원소를 다른 배열의 원소와 비교하는 방법도 있다.

- 로직 자체는 다 비슷한 듯 하다.

 

- 참고: zip() 함수 

a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica", "Vicky")

x = zip(a, b)

# results - (("John", "Jenny"), ("Charles", "Christy"), ("Mike","Monica"))

 

댓글