๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€์ด(js) > [1์ฐจ]์บ์‹œ(lv2)

devWarrior 2023. 7. 30. 21:00

๋ฌธ์ œ ๐Ÿ”ฝ

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด ๐Ÿ”ฝ

function solution(cacheSize, cities) {
    const MISS = 5, HIT = 1;

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

    let answer = 0,
        cache = [];

    cities.forEach(city => {
        city = city.toUpperCase();

        let idx = cache.indexOf(city);

        if (idx > -1) {
            cache.splice(idx, 1);
            answer += HIT;
        } else {
            if (cache.length >= cacheSize) cache.shift();
            answer += MISS;
        }

        cache.push(city);
    });

    return answer;
}

 

๋‚ดํ’€์ด๐Ÿ”ฝ

1. ์„ฑ๊ณต โญ•  

function solution(cacheSize, cities) {
    let answer = 0;
    let cache = []
    // ex) ["newyork", "korea" ... ]
    cities.map((city)=> city.toLowerCase()).forEach((city)=>{
        // ์บ์‹œ์— ์ €์žฅ ๋˜์–ด ์žˆ๋‹ค๋ฉด
        if(cache.includes(city)){
            // ์‹คํ–‰์‹œ๊ฐ„
            answer+=1;
            // stack ์กฐ์ •
                // ํ•ด๋‹น city ๋บ€๋‹ค
                cache = cache.filter((t)=> t!==city)
                // ๋งจ์•ž์œผ๋กœ city ๋„ˆ์–ด์ค€๋‹ค
                cache.unshift(city);
        }else{
            // ์‹คํ–‰์‹œ๊ฐ„
            answer+=5;
            // stack ์กฐ์ •
                // ๋งจ์•ž์œผ๋กœ city ๋„ˆ์–ด์ค€๋‹ค.
                cache.unshift(city);
        }
        cache=cache.filter((val,index) => index<=cacheSize-1)
    })
    
    return answer;
}

๋А๋‚€์ ๐Ÿ”ฝ

์ฒ˜์Œ์— ์บ์‹œ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ์ง€์‹์ด ์—†์–ด์„œ ์—„์ฒญ ์• ๋จน์—ˆ๋‹ค.

LRU(Least Recently Used) ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ฐพ์•„๋ณด๊ณ  cache hit ์™€ cache miss์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ•ด๋‹น ๊ฐœ๋…์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ•˜๊ณ  ๋‚œ๋’ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‰ฝ๊ฒŒ ์งค ์ˆ˜ ์žˆ์—ˆ๋‹ค.