๐ ์๊ณ ๋ฆฌ์ฆ/Programmers
[Javascript/PGS] Lv.2 : [1์ฐจ] ์บ์ (2018 KAKAO)
xxilliant
2025. 5. 14. 17:26
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
๋ฐ์ํ