push()
slice()
function solution(cacheSize, cities) {
let cache = [];
let result = 0;
for (const city of cities) {
const i = cache.indexOf(city.toLowerCase());
result += i >= 0 ? 1 : 5;
if (i >= 0) cache = [...cache.slice(0, i), ...cache.slice(i + 1)];
cache.push(city.toLowerCase());
if (cache.length > cacheSize) cache = cache.slice(1);
}
return result;
}
처음에 왜이리 쉽지 하고 풀었더니 통과하지 못하는 케이스가 있었다.
LRU 알고리즘이 뭔지 제대로 모르고 풀어서였다.
매번 그냥 오래된 거 지우고 새로운 거 붙이는 방식으로 풀었는데, 이게 아니라 캐시에 찾는 요소가 이미 있으면 지운 다음에 새로 붙여야 했다.
무튼 이중 연결 리스트로 head, tail을 가지지는 않아서 제대로 LRU 알고리즘을 구현했다기 보다는 약식인 듯
Least Recently Used