[프로그래머스] 전화번호 목록 (Level 2) (파이썬 python)

2022. 2. 14. 21:45· Algorithm/Programmers

 

 

문제 링크

 

 

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

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

 

 

문제

 

 

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.

 

  • 구조대 : 119
  • 박준영 : 97 674 223
  • 지영석 : 11 9552 4421

 

전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때,

어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록

solution 함수를 작성해주세요.

 

 

제한 사항

 

  • phone_book의 길이는 1 이상 1,000,000 이하입니다.
    • 각 전화번호의 길이는 1 이상 20 이하입니다.
    • 같은 전화번호가 중복해서 들어있지 않습니다.

 

입출력 예제

 

phone_book / return

["119", "97674223", "1195524421"] false
["123","456","789"] true
["12","123","1235","567","88"] false

 

입출력 예 설명

 

입출력 예 #1
앞에서 설명한 예와 같습니다.

입출력 예 #2
한 번호가 다른 번호의 접두사인 경우가 없으므로, 답은 true입니다.

입출력 예 #3
첫 번째 전화번호, “12”가 두 번째 전화번호 “123”의 접두사입니다. 따라서 답은 false입니다.

 

 

문제 풀이

 

 

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

 

접두사를 검사하는 방법을 잘 모르겠어서 결국 찾아봤는데

startswith라는 유용한 내장함수가 있었다.

정렬을 한 뒤에 phoneBook을 검사하면, 바로 다음 문자열을 검사하면 되기 때문에

효율성이 극대화된다.

 

 

boolean startswith(String prefix)

 

접두사를 매개변수로 넣어주었을 때,

문자열이 해당 접두사로 시작할 경우 True를 반환, 아닐 경우 False를 반환한다.

'공백'도 취급하기 때문에 주의해야 한다.

 

반대로 접미사를 취급하는 endswith 함수도 존재한다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers' 카테고리의 다른 글

[프로그래머스] 베스트앨범 (Level 3) (파이썬 python)  (0) 2022.02.15
[프로그래머스] 위장 (Level 2) (파이썬 python)  (0) 2022.02.14
[프로그래머스] 완주하지 못한 선수 (Level 1) (파이썬 python)  (0) 2022.02.14
[프로그래머스] K번째수 (Level 1) (파이썬 python)  (0) 2022.02.12
[프로그래머스] 다리를 지나는 트럭 (Level 2) (파이썬 python)  (0) 2022.02.11
'Algorithm/Programmers' 카테고리의 다른 글
  • [프로그래머스] 베스트앨범 (Level 3) (파이썬 python)
  • [프로그래머스] 위장 (Level 2) (파이썬 python)
  • [프로그래머스] 완주하지 못한 선수 (Level 1) (파이썬 python)
  • [프로그래머스] K번째수 (Level 1) (파이썬 python)
YOONJELLY
YOONJELLY
YOONJELLY
JELLYJELLY
YOONJELLY
전체
오늘
어제
  • 분류 전체보기 (153)
    • Springboot (2)
    • Android (15)
    • Algorithm (126)
      • 개념 (8)
      • BOJ (91)
      • Programmers (15)
      • SWEA (4)
    • 경험_기록 (1)
    • RIM_TIP (4)
    • Github (2)
    • CS (1)
      • 운영체제 (1)
      • 컴퓨터네트워크 (0)
      • 정보처리기사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 완전탐색
  • DFS
  • 이진탐색
  • 파이썬
  • 딕셔너리
  • 안드로이드
  • 그리디
  • SWEA
  • 스택
  • 정렬
  • 코틀린
  • 문자열
  • Android
  • 프로그래머스
  • 다이나믹프로그래밍
  • kotlin
  • 백준
  • Python
  • 소프티어
  • DP
  • 코딩테스트
  • BFS
  • 이것이코딩테스트다
  • BOJ
  • 큐
  • 액티비티컴포넌트
  • 알고리즘
  • programmers
  • 자료구조
  • softeer

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
YOONJELLY
[프로그래머스] 전화번호 목록 (Level 2) (파이썬 python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.