[프로그래머스] 코딩테스트 연습 - 52

krkorklo·2022년 2월 14일
0

프로그래머스

목록 보기
52/78

level 2 - 캐시

캐시 크기(cacheSize)와 도시이름 배열(cities)을 입력받는다. 입력된 도시이름 배열을 순서대로 처리할 때, "총 실행시간"을 출력한다.
캐시 교체 알고리즘은 LRU(Least Recently Used)를 사용한다.
cache hit일 경우 실행시간은 1이다.
cache miss일 경우 실행시간은 5이다.

입출력 예시
cacheSize : 3
cities : ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"]
-> 50

function solution(cacheSize, cities) {
    var answer = 0;
    var count = [];
    if (cacheSize == 0) return cities.length * 5;
    cities.forEach((c) => {
        c = c.toLowerCase();
        if (count.indexOf(c) > -1) {
            count.splice(count.indexOf(c), 1);
            answer++;
        } else {
            if (cacheSize <= count.length) count.shift();
            answer += 5;
        }
        count.push(c);
    })
    return answer;
}

처음에 LRU를 LFU로 봐서 시간 좀 오래 썼다.
ㅎㅋㅎ

0개의 댓글