반응형
오늘은 프로그래머스 level2 문제인 캐시를 풀어보겠습니다.
문제는 다음과 같습니다.
https://programmers.co.kr/learn/courses/30/lessons/17680
* 풀이 방법
1. LRU 캐시 알고리즘을 그대로 코딩을 하면 됩니다.
2. 먼저 캐시에 값 유무가 중요합니다.
2.1. 캐시에 값이 없을 경우
- 값을 넣고, cache miss이므로 +5 추가
2.2. 캐시에 값이 있을 경우
- 기존의 값이랑 겹치는지 확인해줍니다.
- 값이 겹치면 값을 맨 뒤로 옮겨주고 +1 추가
* 소스 코드
function solution(cacheSize, cities) {
let answer = 0;
let cache = [];
const newCities = cities.map((v) => v.toLowerCase());
for(let i = 0; i < newCities.length; i++) {
// 캐시미스일 경우
if(!cache.includes(newCities[i])) {
cache.push(newCities[i]);
// 캐시에 가득찬 경우
if(cache.length > cacheSize) {
cache.shift();
}
answer += 5;
}
// 캐시 히트일 경우
else if(cache.includes(newCities[i])) {
cache.splice(cache.indexOf(newCities[i]), 1);
cache.push(newCities[i]);
answer += 1;
}
}
if(cacheSize === 0) answer = newCities.length * 5;
return answer;
}
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 level1 두 정수 사이의 합 (0) | 2021.08.26 |
---|---|
프로그래머스 level2 - 프린터(javascript) (0) | 2021.08.21 |
두 개 뽑아서 더하기 (프로그래머스 level1 월간 챌린지 시즌1) (0) | 2021.08.20 |
프로그래머스 체육복(Greedy) - level1 (0) | 2021.08.11 |
프로그래머스 타겟 넘버 - level2(dfs) (0) | 2021.08.11 |