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
- 개발브로그
- Stack
- javascirpt
- set활용
- React
- 파이썬
- 롤케이크 자르기
- Algorithm
- 프로그래머스
- typescript
- algorhtim
- javascript
- algorighm
- 1844
- 좌표이동
- frontend
- summerwintercoding
- pymodbus
- queue
- 42587
- dfs
- modbus
- 알고리즘
- 완전탐색
- configfile
- PCCP
- Two Pointer
- InfluxDB
- 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 |