문제
코딩테스트 연습 - [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;
}