일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- METACLASS
- TypeError: 'property' object is not iterable
- springboot 3.0.0
- depends
- python
- python all testcode
- docker
- 우아한 테크코스 2차 합격
- 재귀함수가 뭔가요
- AWS S3
- javascript
- classproperty
- Django
- classmethod
- MySQL server on 'db' (115)
- 프로그래머스
- Spring
- depends_on
- 갓재석
- 우아한테크코스 2차
- EC2
- 2차 코딩테스트
- docker-compose
- github skyline
- S3
- DB
- AWS
- OperationalError
- 코딩테스트
- github
Archives
hanbin.dev
[코딩테스트] 전화번호 목록 with Python 본문
아이디어
def solution(phone_book):
for a in phone_book:
for b in phone_book:
if a.startswith(b) and a != b:
return False
return True
그냥 문제 보자마자 이 코드가 생각났다.
물론 정확성 테스트는 그냥 통과하는데 효율성 테스트에서 막힌다.
다른 방법을 생각해야 했다.
제한 사항을 확인하자.

phone_book의 길이가 1,000,000 이하라고 한다.
최대 O(n log n) 으로 풀어야 한다.
문제 풀이 코드
def solution(phone_book):
phone_book.sort() # 1
for a,b in zip(phone_book, phone_book[1:]): # 2
if b.startswith(a):
return False
return True
#1
문자열 정렬로 접두어 번호가 비교되는 번호의 앞에 오도록 한다.
#2
바로 앞, 뒤만 체크하며 지나가 시간 복잡도가 줄어든다 O(N)
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 타겟 넘버 with Python (0) | 2021.05.13 |
---|---|
[코딩테스트] 프로그래머스 더 맵게 with Python (0) | 2021.05.12 |
[코딩테스트] 프로그래머스 프린터 with Python (0) | 2021.05.10 |
[코딩테스트] 프로그래머스 다리를 지나는 트럭 with Python (0) | 2021.05.09 |
[코딩테스트] 프로그래머스 기능개발 with javascript (0) | 2021.05.07 |