kakasoo

[node.js] 캐시 ( 프로그래머스 레벨2 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 캐시 ( 프로그래머스 레벨2 )

카카수(kakasoo) 2021. 7. 5. 19:21
반응형
// 프로그래머스 레벨2 캐시를 풀었습니다.

// 아예 LRU에 대한 개념이 없어서, (hit, miss 개념은 안다. )
// 곤란하게 한 문제다.

const solution = (cacheSize, cities) => {
    if (cacheSize === 0) return cities.length * 5;

    const cache = [];

    let answer = 0;
    for (let i = 0; i < cities.length; i++) {
        const city = cities[i].toUpperCase();
        if (cache.includes(city)) {
            answer += 1;
            cache.splice(cache.indexOf(city), 1);
            cache.push(city);
        } else {
            answer += 5;

            if (cache.length === cacheSize) {
                cache.shift();
            }
            cache.push(city);
        }
    }

    return answer;
};

cache에 관한 내용은 HTTP를 공부할 때 한 번 씩 봤었지만, LRU 같은 개념은 본 적이 없어서 검색해야 했다.
적중률을 높이는 게 캐시의 핵심이던가.
문제 자체는 레벨2 라고 할 정도는 아닌데, 만약 이게 카카오 시험 중에 나왔다면 곤란했을 거 같다.
대강적인 느낌?으로 찍어야 하는 상황이니... 참 답답하다 이런 부분은.

반응형