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 | 31 |
Tags
- LLM
- rag
- typescript
- Two Pointer
- DP
- jenkins
- 알고리즘
- Infra
- AI
- CI/CD
- javascript
- dfs
- ansible
- React
- 프로그래머스
- BFS
- turbo
- frontend
- javascirpt
- Flask
- Algorithm
- docker
- queue
- build
- VectoreStore
- modbus
- 파이썬
- monorepo
- RDP
- python
Archives
- Today
- Total
DM Log
[해시] 전화번호 목록 - Python / JavaScript 본문
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 간단 요약]
1. 어떤 전화번호가 다른 전화번호의 접두어인 경우가 있는지 판별
2. 접두어 관계가 있으면 false, 없으면 true
[문제 해결 방안]
1. 정렬 + 인접 비교
- phone_book을 오름차순 정렬
- 정렬된 배열에서 i번 전화번호가 i+1번 전화번호의 접두어인지 확인
2. 해시 (Set) 이용
[문제 해결 코드 - python]
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)-1):
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
answer=False
return answer
def solution(phone_book):
phone = {k:0 for k in phone_book}
for key in phone.keys():
temp = ""
for number in key:
temp += number
if temp == key: continue
if temp in phone: return False
return True
[문제 해결 코드 - javascript]
function solution(phone_book) {
const hash_number = new Set(phone_book)
for (const number of phone_book) {
for (let i=0; i < number.length; i++) {
let pre = number.slice(0,i)
if (hash_number.has(pre)) {
return false
}
}
}
return true
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [연습문제] 롤케이크 자르기- Python / Javascript (0) | 2025.07.14 |
|---|---|
| [스택/큐] 프로세스 - Python / Javascript (0) | 2025.07.13 |
| [2019 카카오 개발자 겨울 인턴십] 튜플 - Python / JavaScript (0) | 2025.04.15 |
| [2018 KAKAO BLIND RECRUITMENT] [1차] 캐시 - Python / JavaScript (0) | 2025.04.04 |
| [완전탐색] 피로도 - Python / JavaScript (0) | 2025.03.30 |
