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 |
Tags
- BFS
- monorepo
- heapq
- queue
- modbus
- python
- typescript
- OpenAI
- javascirpt
- docker
- CI/CD
- frontend
- 알고리즘
- LLM
- 파이썬
- Algorithm
- rag
- Two Pointer
- VectoreStore
- DP
- build
- ansible
- dfs
- 프로그래머스
- React
- javascript
- Infra
- turbo
- AI
- jenkins
Archives
- Today
- Total
DM Log
[2018 KAKAO BLIND RECRUITMENT] [1차] 캐시 - Python / JavaScript 본문
알고리즘/프로그래머스
[2018 KAKAO BLIND RECRUITMENT] [1차] 캐시 - Python / JavaScript
Dev. Dong 2025. 4. 4. 21:01문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/17680
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 간단 요약]
1. 도시 이름이 주어지고 LRU(Least Recently Used) 방식의 캐시를 구현하는 문제
- 가장 오래 전에 사용된 데이터를 가장 먼저 제거하는 캐시 교체 알고리즘
- 캐시의 크기 제한이 있을 때, 새 데이터를 넣기 위해 캐시에서 데이터를 제거해야 한다면, 가장 오래 사용되지 않은 데이터부터 제거
- 캐시에 접근(조회 또는 삽입)한 데이터는 가장 최근에 사용된 것으로 간주되어 맨 뒤로 이동
[문제 해결 방안]
1. 도시 이름을 대문자로 만들어 비교
2. 도시를 캐시 리스트로 관리하여 문제 해결
| 도시가 캐시에 있음 | Cache Hit | +1 | - 해당 도시 삭제 - 다시 맨 뒤에 추가 (가장 최근 사용) |
| 도시가 캐시에 없음 & 캐시 공간 여유 있음 (len(cache) < cacheSize) | Cache Miss | +5 | - 도시를 캐시에 추가 |
| 도시가 캐시에 없음 & 캐시 공간 가득 참 (len(cache) >= cacheSize) | Cache Miss | +5 | - 맨 앞의 도시 제거 (LRU 제거) - 새 도시 추가 |
[문제 해결 코드 - python]
def solution(cacheSize, cities):
answer = 0
cache_arr = []
if cacheSize == 0:
return len(cities)*5
for city in cities:
city = city.upper()
if city in cache_arr:
answer+=1
cache_arr.remove(city)
cache_arr.append(city)
elif len(cache_arr) < cacheSize:
answer+=5
cache_arr.append(city)
else:
answer+=5
cache_arr.pop(0)
cache_arr.append(city)
return answer
[문제 해결 코드 - javascript]
function solution(cacheSize, cities) {
var answer = 0;
let cache_arr = []
if (cacheSize === 0) {
return cities.length * 5
}
for (let city of cities) {
city = city.toUpperCase()
if (cache_arr.includes(city)) {
answer += 1
cache_arr = cache_arr.filter((e) => e !== city)
cache_arr.push(city)
} else if (cache_arr.length < cacheSize) {
answer += 5
cache_arr.push(city)
} else {
answer += 5
cache_arr.shift()
cache_arr.push(city)
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [해시] 전화번호 목록 - Python / JavaScript (2) | 2025.07.07 |
|---|---|
| [2019 카카오 개발자 겨울 인턴십] 튜플 - Python / JavaScript (0) | 2025.04.15 |
| [완전탐색] 피로도 - Python / JavaScript (0) | 2025.03.30 |
| [정렬] H-Index - Python / JavaScript (0) | 2025.03.29 |
| [스택/큐] 기능개발 - Python (0) | 2025.03.24 |