본문 바로가기
프로그래머스/Python

[프로그래머스] 전화번호 목록 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 3.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 전화번호가 다른 전화번호의 접두사가 되는지 판별하는 문제입니다.

접두사가 되려면 전화번호의 앞 문자부터 일치해야 합니다.

하여 전화번호를 문자열 형태로 정렬하게 되면 1~9를 사전정렬하듯 오름차순으로 정렬됩니다.

정렬한 전화번호를 앞에서부터 해당 전화번호의 다음 전화번호와 비교하여 접두사인지 아닌지를 판별하면 되는데 여기서 다음 전화번호 하나만 비교하면 되는 이유는 전화번호를 문자열 형태로 정렬했기 때문입니다.

문자열 형태로 정렬했기 때문에 뒤 전화번호는 이전 전화번호보다 사전적으로 큰 값을 가지고 있어 현재 전화번호의 다음 전화번호밖에 접두사가 될 수 있습니다.

 

  1. 전화번호 목록을 문자열 형태에서 정렬한다. phone_book.sort()
  2. 전화번호 목록을 제일 마지막 전까지 하나씩 추출하여 for i in range(len(phone_book) - 1)
  3. 만약 현재 전화번호 목록이 다음 전화번호 목록의 접두사이면 if (phone_book[i] == phone_book[i + 1][ : len(phone_book[i])])
  4. 접두사인 경우가 존재하므로 False를 저장하고 answer = False
  5. 바로 반환하여 함수를 종료시킨다. return answer
반응형

3. 소스코드

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
            return answer
    
    return answer
728x90
반응형