๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.2 : [1์ฐจ] ์บ์‹œ (2018 KAKAO)

by xxilliant 2025. 5. 14.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/17680


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 2.

์บ์‹œ ์ €์žฅ๊ณต๊ฐ„์„ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ์ˆœ ๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค.

 

์บ์‹œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU(Least Recently Used)์ด๋ฏ€๋กœ, ์ตœ๊ทผ ์‚ฌ์šฉํ–ˆ๋˜ ์ˆœ์œ„๋ฅผ ๊ธฐ์–ตํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, ์บ์‹œ ๋ฐฐ์—ด์— ๊ฐ€์žฅ ์ตœ๊ทผ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ 1๋กœ,

๋‚˜๋จธ์ง€ ๊ฒƒ๋“ค์€ ํ•ด๋‹น ์œ„์น˜์˜ ๊ฐ’์— 1์”ฉ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.

 

์ฃผ์˜ํ•  ์ ์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ์—†์• ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ! ๋‚˜์˜ ๊ฒฝ์šฐ๋Š” js๋ผ์„œ toLowerCase ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

 

๋‚˜์˜ ํ’€์ด

function solution(cacheSize, cities) {
    var answer = 0;
    let cache = new Array(cacheSize).fill(["",0]);
    
    cities.forEach(city=>{
        city = city.toLowerCase();
        let idx = -1;
        // ์บ์‹œ์—์„œ ์ฐพ๊ธฐ
        for(let i=0; i<cacheSize; ++i){
            if(cache[i][0] == city){
                idx = i;
                break;
            }
        }
        // ์บ์‹œ hit
        if(idx>=0) {
            answer += 1;
            for(let i=0; i<cacheSize; ++i){
                if(i==idx) cache[idx] = [city, 1]; // ๊ฐ€์žฅ ์ตœ๊ทผ ์‚ฌ์šฉ = 1
                else cache[i][1] += 1;
            }
        }
        // ์บ์‹œ miss
        else {
            answer += 5;
            let deleteIdx = 0;
            let maxValue = 0;
            for(let i=0; i<cacheSize; ++i){
                if(cache[i][1]==0){
                    deleteIdx = i;
                    break;
                }
                if(maxValue < cache[i][1]){
                    maxValue = cache[i][1];
                    deleteIdx = i;
                }
            }
            cache[deleteIdx] = [city,1];
            for(let i=0; i<cacheSize; ++i){
                if(i==deleteIdx || cache[i][1]==0) continue;
                cache[i][1] += 1;
            }
        }
    })
    
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•