[프로그래머스][Level2] 캐시

다돔잉·2020년 11월 1일
0

문제

캐시 교체 알고리즘은 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 화면 자체에서 자꾸 못풀어서 속상..

profile
안녕

0개의 댓글