Development/알고리즘

[프로그래머스 | Javascript] Lv.2 캐시

레오나르도 다빈츠 2024. 12. 8. 14:35
function solution(cacheSize, cities) {
    const HIT = 1, MISS = 5
    const cache = []
    let totalTime = 0

    if (cacheSize === 0) return MISS * cities.length

    for (let i = 0; i < cities.length; i++) {
        const searchTarget = cities[i].toLowerCase()

        if (cache.includes(searchTarget)) {
            // HIT: 캐시에서 찾은 경우
            totalTime += HIT
            cache.splice(cache.indexOf(searchTarget), 1)
        } else {
            // MISS: 캐시에서 찾지 못한 경우
            totalTime += MISS
            if (cache.length >= cacheSize) {
                cache.shift()
            }
        }
        cache.push(searchTarget)
    }

    return totalTime
}