일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 대회
- 4기
- P Stage
- 프로그래머스
- BOJ
- 서버
- 서블릿
- Customer service 구현
- Naver boostcamp
- 웹 프로그래밍
- Naver boostcourse
- AI Tech
- 파이썬
- Django
- 부스트캠프
- 레벨2
- 장고
- boostcourse
- AI Tech 4기
- 백엔드
- 2021 Dev-matching 웹 백엔드 개발자
- 풀스택
- 웹
- cs50
- 프로그래밍
- QNA 봇
- 네이버
- 구현
- 백준
- sts
Archives
- Today
- Total
daniel7481의 개발일지
[프로그래머스]전화번호 목록 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42577
풀이
전형적인 해시 문제이다. 만약 모든 전화번호에 대하여 리스트에 저장한 다음에 탐색하며 비교했다면 당연히 시간초과가 나왔을 것이다. 사실 해시를 공부하고 다른 언어로 해시를 구현한 것을 봤을 때, 굉장히 복잡하다고 생각했다. 나는 우매하기 때문에 단순히 딕셔너리로 해시를 구현하고는 한다. 이 문제도 마찬가지로 전화번호를 길이 순서(오름차순)으로 정렬한 다음 작은 번호부터 하나씩 탐색하면서 만약 번호가 딕셔너리의 키 값으로 존재하면 False, 아니면 True를 반환했다. 키 값을 이용해서 해싱하면 효율적으로 값을 접근할 수 있다. 딕셔너리는 정말 파이썬의 보물과 같다.
def solution(phone_book):
answer = True
dic = dict()
phone_book.sort(key=lambda x: len(x))
flag = False
for pb in phone_book:
num = ''
for s in pb:
num += s
try:
dic[num]
flag = True
break
except:
continue
if flag:
break
else:
dic[num] = True
if flag:
answer = False
return answer
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]타겟 넘버 (0) | 2022.07.21 |
---|---|
[프로그래머스]프린터 (0) | 2022.07.21 |
[프로그래머스]빛의 경로 사이클 (0) | 2022.07.20 |
[프로그래머스]수식 최대화 (0) | 2022.07.20 |
[프로그래머스] 튜플 (0) | 2022.07.19 |