프로그래밍/알고리즘 풀이
[node.js] 캐시 ( 프로그래머스 레벨2 )
카카수(kakasoo)
2021. 7. 5. 19:21
반응형
// 프로그래머스 레벨2 캐시를 풀었습니다.
// 아예 LRU에 대한 개념이 없어서, (hit, miss 개념은 안다. )
// 곤란하게 한 문제다.
const solution = (cacheSize, cities) => {
if (cacheSize === 0) return cities.length * 5;
const cache = [];
let answer = 0;
for (let i = 0; i < cities.length; i++) {
const city = cities[i].toUpperCase();
if (cache.includes(city)) {
answer += 1;
cache.splice(cache.indexOf(city), 1);
cache.push(city);
} else {
answer += 5;
if (cache.length === cacheSize) {
cache.shift();
}
cache.push(city);
}
}
return answer;
};
cache에 관한 내용은 HTTP를 공부할 때 한 번 씩 봤었지만, LRU 같은 개념은 본 적이 없어서 검색해야 했다.
적중률을 높이는 게 캐시의 핵심이던가.
문제 자체는 레벨2 라고 할 정도는 아닌데, 만약 이게 카카오 시험 중에 나왔다면 곤란했을 거 같다.
대강적인 느낌?으로 찍어야 하는 상황이니... 참 답답하다 이런 부분은.
반응형