티스토리 뷰
문제 설명
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.
-
구조대 : 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입니다.
문제 풀이
1
2
3
4
5
6
7
8
9
10
|
def solution(phone_book):
answer = True
for i in range(0,len(phone_book)-1):
for j in range(i+1,len(phone_book)):
if phone_book[i] in phone_book[j]:
answer=False
return answer #False로 바뀌면 바로 리턴하고 끝내도록 했더니 효율성검사를 통과했다
return answer
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
이 문제는 해시를 이용하지 않고 직관적으로 이중반복문을 사용하였다.
시간복잡도가 O(n^2)이기 때문에 효율성 검사에서 실패가 뜰까봐 걱정하면서 코드를 짰다.
처음엔 주석달린 부분의 return answer를 쓰지 않았었는데 그때는 효율성 검사 실패가 떴었다.
그래서 프로그래머스>질문하기 게시판에 들어갔는데 나와 같은 사람들이 몇몇 있어서 댓글을 봤는데 중간에 False로 바뀌어도 끝까지 검사를 거쳐서 효율성 검사 실패가 뜬다고 하길래 answer가 False가 되자마자 return answer하고 멈추도록 했더니 효율성 검사 또한 통과할 수 있었다!
'알고리즘, 코딩테스트 > 프로그래머스 문제풀이' 카테고리의 다른 글
[파이썬] 프로그래머스 Level.3 | 해시 | 베스트앨범 (0) | 2020.02.12 |
---|---|
[파이썬] 프로그래머스 Level.2 | 해시 | 위장 (0) | 2020.02.12 |
[파이썬] 프로그래머스 Level.1 | 해시 | 완주하지 못한 선수 (0) | 2020.02.12 |
[파이썬] 프로그래머스 Level.2 | 완전탐색 | 숫자야구 (0) | 2020.01.29 |
[파이썬] 프로그래머스 Level.1 | 완전탐색 | 모의고사 (0) | 2020.01.29 |
- Total
- Today
- Yesterday
- 티스토리챌린지
- AWSBedrock
- S3 403 forbidden
- React native 작동 원리
- ChatGPT
- 생성형AI
- partyrock
- 백준
- SpacewBetween
- partyrock무료
- 알고리즘
- 오블완
- 정적 웹페이지 배포
- S3배포
- awsgenai
- 병돌리기구현
- easycode
- partyrock앱
- vscode easycode
- easycode chatGPT
- genaiapp
- aws생성형ai
- partyrock생성
- 코딩테스트
- partyrock사용볍
- 파이썬
- 술자리병돌리기게임
- 정적 웹사이트 배포
- PYTHON
- BOJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |