Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MySQL
- Image Segmentation
- 알고리즘
- 스택
- Machine Learning Advanced
- eda
- 엘리스
- Object Detection
- Python
- pytorch
- DilatedNet
- 협업필터링
- Semantic Segmentation
- 한빛미디어
- 튜토리얼
- TEAM-EDA
- DFS
- Segmentation
- hackerrank
- 나는 리뷰어다
- 추천시스템
- 입문
- 나는리뷰어다
- 큐
- 코딩테스트
- 프로그래머스
- Recsys-KR
- TEAM EDA
- 3줄 논문
- 파이썬
Archives
- Today
- Total
TEAM EDA
[프로그래머스] 전화번호 목록 / 파이썬 본문
전화번호 목록
문제 설명
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.
- 구조대 : 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입니다.
풀이
- sorted를 이용해서 앞자리가 같은 문자열을 정렬
(phone_book[start][0] == A[0])
에서 앞자리가 같은 값들만 비교- 중간에 똑같은 값을 찾으면 탈출 (
A == phone_book[start][0:len(A)]
)
- 중간에 똑같은 값을 찾으면 탈출 (
def solution(phone_book):
answer = True
phone_book = sorted(phone_book)
while len(phone_book) > 1:
start = 0
A = phone_book.pop(0)
while (phone_book[start][0] == A[0]) & (start < len(phone_book)):
if A == phone_book[start][0:len(A)]:
answer = False
break
start += 1
if answer == False: break
return answer
다른사람 풀이
-
풀이는 똑같음
-
startswith는 괄호안의 값이 같은지 확인하는 함수
- A.startswith(B, 0, 10) : A의 0부터 10이 B와 같은 지 확인
- 아무값도 없으면 0부터 B의 길이까지 확인
-
근데, 이 방법이 되는 이유가 sorted()에 의해서 됨
-
위의 내 코드도 sorted때문에 앞자리 같은 값만 비교하지 않아도 되었음 !!!
-
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
출처: 프로그래머스 코딩 테스트 연습,https://programmers.co.kr/learn/challenges
'EDA Study > 알고리즘' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 / 파이썬 (0) | 2020.04.08 |
---|---|
[프로그래머스] 구명보트 / 파이썬 (1) | 2020.04.07 |
[프로그래머스] 위장 / 파이썬 (0) | 2020.04.05 |
[프로그래머스] H-Index / 파이썬 (0) | 2020.04.05 |
[프로그래머스] 더 맵게 / 파이썬 (0) | 2020.04.05 |