2018 KAKAO BLIND RECRUITMENT - [1차]캐시

이서현·2021년 7월 29일
0

Algorithm

목록 보기
56/76

07.29에 푼 문제입니당🌷
[1차]캐시

개념정리

LRU (Least Recently Update)

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 Hit / Cache Miss

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;
}
profile
안녕하세요. 이서현입니다( ღ'ᴗ'ღ )

0개의 댓글