알고리즘문제
프로그래머스 > [1차]캐시(JS)
단점이없어지고싶은개발자
2022. 11. 13. 22:26
반응형
1. 이 문제는 이해가 안되서 다른 사람이 푼 풀이를 바탕으로 이해하면서 다시 풀었다.
2. 핵심은 큐와 스택으로 문제를 풀었어야 했다.
function solution(cacheSize, cities) {
let count = 0 ;
let cityArray = [];
cities.forEach((el) => {
let currentCity = el.toLowerCase(); // 소문자로 통일
let isFindCity = cityArray.find((city) => city === currentCity);
//새로운 배열인 cityArray에 해당 city가 있는지 판단
if (!isFindCity) {
cityArray.push(currentCity);
if (cityArray.length > cacheSize) {
//cacheSize보다 city를 담아둔 배열이 크다면 앞에서부터 빼주었다.
//LRU알고리즘, 맨 앞에 있는 것이 가장 오래된 것이기에 앞에서부터 빼주었다.
cityArray.shift();
}
count += 5;
//miss이기에 + 5
} else {
cityArray = cityArray.filter((city) => city !== currentCity);
//같은게 있다면 같은 걸 빼버리고, 새로운 걸 스택으로 쌓는다.
cityArray.push(currentCity);
count += 1;
//hit이기에 + 1
}
});
return count;
}
https://dailylifeofdeveloper.tistory.com/355
LRU 알고리즘 (Least Recentely Used) 개념 및 구현방법
안녕하세요! daily_D 입니다! 👩🏻💻 오늘은 페이지 교체 알고리즘 중에서 LRU에 대해서 공부해볼까요?! LRU 란? LRU(Least Recently Used)는 가장 오랫동안 참조되지 않은 페이지를 교체하는 방식입니
dailylifeofdeveloper.tistory.com
반응형