function solution(cacheSize, cities) {
let times = 0;
let cache = [];
if(!cacheSize) return 5 * cities.length;
cities.forEach((city) => {
city = city.toLowerCase();
if(cache.includes(city)) {
cache.splice(cache.indexOf(city),1);
times += 1;
} else {
if(cache.length == cacheSize) cache.shift();
times += 5;
}
cache.push(city)
})
return times
}
LRU(Least Recently Used) 캐시 교체 알고리즘
캐시에 최대로 저장할 수 있는 Size가 정해져 있고, 캐시에는 최근에 사용한 순서대로 자료가 쌓이게 된다.
캐시사이즈가 꽉 채워진 경우 가장 오랫동안 쓰이지 않은 자료를 shift()하고 새로운 자료를 push()한다.
cache hit : 캐시에서 자료를 꺼내 쓴 경우.
cache miss : 캐시에 자료가 없는 경우