[프로그래머스][Level2] 캐시
문제
캐시 교체 알고리즘은 LRU(Least Recently Used)를 사용한다.
cache hit일 경우 실행시간은 1이다.
cache miss일 경우 실행시간은 5이다
캐시크기(cacheSize) 도시이름(cities) 실행시간
3 [Jeju, Pangyo, Seoul, NewYork, LA, Jeju, Pangyo, Seoul, NewYork, LA] 50
코드
function solution(cacheSize, cities) {
var answer = 0;
let cache = [];
cities.forEach(city=>{
city = city.toLocaleLowerCase();
let i = cache.findIndex(c=>{return c===city});
if(i >= 0){
answer += 1;
cache.push(cache.splice(i, 1).toString());
} else {
answer += 5;
cache.push(city);
cache.length > cacheSize ? cache.shift() : '';
}
})
return answer;
}
방법
cache배열에 city가 존재하면 cache배열에서 city를 삭제하고 가장 마지막 원소로 push
cache배열에서 city가 존재하지 않으면 cache배열에 city를 push. push 후, cache배열의 크기가 cacheSize보다 커지면 0번 인덱스에 해당하는 city를 삭제함
후기
별로 안어려웠는데 programmers 화면 자체에서 자꾸 못풀어서 속상..
Author And Source
이 문제에 관하여([프로그래머스][Level2] 캐시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dasom2d/프로그래머스Level2-캐시저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)