07.29에 푼 문제입니당🌷
[1차]캐시
LRU는 교체되지 않는 가장 오래된 페이지를 업데이트하는 것이다.
cache size = 3 이고
input = ["Jeju", "Pangyo", "Seoul", "NewYork", "Seoul"] 이라고 하면
input[0] = "Jeju"
cache = ["Jeju"]
input[1] = "Pangyo"
cache = ["Jeju", "Pangyo"]
input[2] = "Seoul"
cache = ["Jeju", "Pangyo","Seoul"]
input[2] = "NewYork"
cache = ["Pangyo","Seoul","NewYork"]
가장 오래된 Jeju가 사라지고 NewYork이 들어온다.
input[3] = "Seoul"
cache = ["Pangyo","NewYork","Seoul"]
중간에 Seoul이 호출되었으므로 맨 뒤로 이동한다.
Cache 란?
프로그램이 수행될 때 나타나는 지역성을 이용하여 메모리나 디스크에서 사용되었던 내용을 특별히 빠르게 접근할 수 있는 곳에 보관하고 관리함으로써 이 내용을 다시 필요로할 때 보다 빠르게 참조하도록 하는 것이다.
Cache Hit : CPU가 참조하고자 하는 값이 cache 에 있는 경우
Cache Miss : CPU가 참조하고자 하는 값이 Cache에 없는 경우
function solution(cacheSize, cities) {
if(cacheSize===0) return 5*cities.length
var answer = 0;
const cache = []
cities.map(city=>{
city = city.toLowerCase()
let index = cache.indexOf(city)
if(index!==-1){
answer+=1
cache.splice(index,1)
}
else{
answer+=5
if(cache.length>=cacheSize) cache.shift()
}
cache.push(city)
})
return answer;
}