말랑한 하루

[Programmers] 캐시 (Lv 2, JavaScript) 본문

문제풀이/Programmers

[Programmers] 캐시 (Lv 2, JavaScript)

지수는말랑이 2022. 9. 19. 14:08
반응형

[ 학습 내용 ]
- LRU (Least Recently Used) 알고리즘

페이지 교체 알고리즘으로, 가장 오랫동안 참조되지 않은 페이지를 교체하는 알고리즘. 

[ 소스 코드 ]

function solution(cacheSize, cities) {
    var answer = 0;
    var cache = [];
    cities.forEach((city) => {
        city = city.toLowerCase();
        if (cache.includes(city)) {
            cache.splice(cache.indexOf(city), 1);
            cache.unshift(city);
            answer += 1;
        } else {
            if (cache.length == cacheSize) cache.pop();
            if (cacheSize != 0) cache.unshift(city);
            answer += 5;
        }
    })
    
    return answer;
}

[ 코드 분석 ]

캐시 크기가 0부터 시작하는 것에 대해 예외처리를 해주어야 한다.

cache hit인 경우 현재 참조된 도시는 삭제하고 캐시의 최근으로 옮겨준다.

cache miss인 경우 가장 오랫동안 참조되지 않은 도시(배열의 마지막)은 삭제하고, 현재 참조된 도시를 맨앞에 추가한다.

반응형
Comments