반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/17680
2. 코드
https://rangsub.tistory.com/124
이 문제는 큐의 개념을 사용해서 풀면 된다. LRU 알고리즘의 핵심은 최근에 사용되지 않은 것 중 가장 먼저 들어온 것(오래된 것)을 먼저 삭제 한다는 것이다. 자세한 개념은 위의 링크를 참고하면 된다.
function solution(cacheSize, cities) {
// 캐시 사이즈가 0이면 그냥 하나씩 다 작업해야하므로
if(cacheSize === 0) return cities.length * 5;
// 전체 다 소문자로 만들어 줌
cities = cities.map((el) => el.toLowerCase());
let answer = 0;
// 큐. 앞이 출구 뒤가 입구
let cache = [];
for(let i=0;i<cities.length;i++){
if(!cache.includes(cities[i]) && cache.length < cacheSize) {
cache.push(cities[i]);
answer += 5;
}else if(!cache.includes(cities[i]) && cache.length === cacheSize){
cache.push(cities[i]);
cache.shift();
answer += 5;
}else{
let temp = cache.filter((el) => el !== cities[i]);
temp.push(cities[i]);
cache = temp;
answer++;
}
}
return answer;
}
이 문제는 테케가 다양해서 좋았다! 프로그래머스 테케가 좀 더 다양했음 좋겠다. 테스트할 때 내가 어떤 테케에서 틀렸는지도 볼 수 있음 너무 좋고..ㅠㅠ
반응형
'프로그래머스 > 스택, 큐' 카테고리의 다른 글
[스택] 프로그래머스 '택배상자' - js (0) | 2023.05.04 |
---|---|
[스택] 프로그래머스 '같은 숫자는 싫어' - js (0) | 2023.03.31 |
[스택] 프로그래머스 '짝지어 제거하기' - js (0) | 2023.03.17 |
[스택] 프로그래머스 '다리를 지나는 트럭' - js (0) | 2022.11.17 |
[큐] 프로그래머스 '프린터' - js (0) | 2022.11.16 |