Algorithm

LRU Cache (Least Recently Used) / 프로그래머스 캐시

Dongkkase 2022. 1. 19. 09:48
반응형

- 사용한지 가장 오래된 페이지를 교체.

- 현 시점에서 가장 오랫동안 사용하지 않은 페이지와 교체.

- 각 페이지마다 계수기를 두어 사용하는 기법

개념설명: https://youtu.be/6wulDqi6z-s

페이지가 교체되는 흐름

 

 

function solution(cacheSize, cities) {
    var cache = [],
        answer = 0,
        cache_idx = 0;
    
    if (cacheSize == 0) return cities.length * 5;
    
    cities.map(city => {
        city = city.toLowerCase();
        cache_idx = cache.indexOf(city);
        
        if (cache_idx > -1)
        {
            cache.splice(cache_idx, 1);
            answer++; // Cache Hit (page change)
        }
        else if (cache.length >= cacheSize)
        {
            cache.shift();
        }
        
        cache.push(city);
    });
    
    return ((cities.length - answer) * 5) + answer;
}
반응형