본문으로 바로가기

programmers. 캐시

category Algorithm문제 4년 전

문제

문제

 

코딩테스트 연습 - [1차] 캐시

3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro

programmers.co.kr

풀이

너무 쉬워서 막힘없이 쭉쭉 구현해서 자신있게 제출을 했는데 틀렸다

암만 봐도 완벽한데.. 하고 검색해보니까 LRU에 제대로 이해를 하지 못해서 그런거였다

캐쉬가 [A,B] 존재하고 여기에 A가 들어오면

나는 캐쉬가 hit했기 때문에 캐쉬를 [A,B]로 놔두었지만

그것과 상관없이 캐쉬를 [B,A]와 같이 업데이트 해주어야한다

코드

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

        var answer = 0;
        cities = cities.map(v=>v.toLowerCase());

        const queue = [];

        for(let i=0;i< cities.length;i++){
            const idx = queue.findIndex(city=> city===cities[i]);
            if(idx!==-1){
                answer++;
                queue.splice(idx,1);
                queue.push(cities[i]);
                continue;
            }
            if(queue.length>=cacheSize){
                queue.shift();
            }
            queue.push(cities[i]);
            answer+=5;
        }
        return answer;
    }

Algorithm문제카테고리의 다른글

programmers. 점프와 순간 이동  (0) 2021.04.19
programmers. 추석 트래픽  (0) 2021.04.18
programmers. 프렌즈 4블록  (0) 2021.04.14
programmers. 뉴스클러스터링  (0) 2021.04.13
programmers. 게임 맵 최단거리  (0) 2021.04.12