코딩 테스트/프로그래머스 level2

[1차] 캐시

fullfish 2022. 9. 10. 01:43

코드

function solution(cacheSize, cities) {
  cities = cities.map((ele) => ele.toLowerCase());
  let cache = [];
  let second = 0;
  if (cacheSize === 0) return cities.length * 5;
  for (let i = 0; i < cities.length; i++) {
    if (cache.includes(cities[i])) {
      second++;
      cache.splice(cache.indexOf(cities[i]), 1);
      cache.push(cities[i]);
    } else {
      second += 5;
      if (cache.length === cacheSize) cache.shift();
      cache.push(cities[i]);
    }
  }
  return second;
}

LRU(Least Recently Used)를 선입 후출개념으로 잘못이해해서 막혀있었다

말 그대로 열람이 안된것을 뒤로 미루는것인데 
예를들어 cache에 [1,2,3,4]가 있을때 2가 새로 들어온다면

[2,3,4,2]가 아니라 [1,3,4,2]가 되어야한다

또한 cacheSize가 0일 때도 생각해줘야한다

'코딩 테스트 > 프로그래머스 level2' 카테고리의 다른 글

H-Index  (0) 2022.09.10
점프와 순간 이동  (0) 2022.09.10
멀리 뛰기  (0) 2022.09.10
구명보트  (0) 2022.09.10
행렬의 곱셈  (0) 2022.09.09