Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 모던 자바스크립트 딥다이브
- Vue3
- K_Digital Training
- react 프로젝트 리팩토링
- 리팩토링 회고
- 우테캠 회고록
- 인프런 자바스크립트 알고리즘 문제풀이
- 모던 자바스크립트 Deep Dive TIL
- react customHook 예시
- 개발자 특강
- frontend roadmap study
- 모던 자바스크립트 TIL
- 백준 node.js
- KDT 프로그래머스
- 프로그래머스 데브코스
- useEffect return
- KDT 프로그래머스 데브코스 프론트엔드
- 프로그래머스 K_Digital Training
- 백준 js
- 프로그래머스 K_Digital Training 프론트엔드
- TypeScript 문법 소개
- 프로그래머스 데브코스 프론트엔드 TIL
- 투포인터알고리즘 js
- Frontend Roadmap
- useRef 지역 변수
- 모던 자바스크립트 Deep Dive
- 모던 javascript Deep Dive
- 머쓱이
- Vue3 Router
- 프로그래머스 데브코스 프론트엔드
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
Least Recently Used(카카오 캐시 문제 변형) 본문
🚩 LRU 삽입 정렬 응용
📖 문제 설명 : 캐시의 개수와 작업의 개수가 주어질 때, LRU 알고리즘과 유사하게 작업을 할 수 있게 구성하면 된다. (자세한 내용은 강의 및 문제지 참고)
💡Tip. includes, indexOf 메소드 사용
// LRU 삽입 정렬 응용 (카카오 캐시 문제 변형)
// O(n^2)
function solution(S, arr) {
let answer = [...arr]
let cache = new Array(S).fill(0)
answer.forEach((el) => {
// Cache Miss
if (!cache.includes(el)) {
// 한 칸씩 뒤로 미룬 후 처음에 작업 삽입
for (let i = cache.length - 2; i >= 0; i--) {
cache[i + 1] = cache[i]
}
cache[0] = el
}
// Chache Hit
else {
let idx = cache.indexOf(el)
for (let j = idx - 1; j >= 0; j--) {
cache[j + 1] = cache[j]
}
cache[0] = el
}
})
return cache
}
let S = 5
let arr = [1, 2, 3, 2, 6, 2, 3, 5, 7]
console.log(solution(S, arr))
👨💻 코드 설명
1. 배열에 해당 요소가 포함되어 있을 경우 Cache Hit, 없을 경우 Cache Miss로 나눈다.
2. Cache Miss일 경우 배열의 요소를 한 칸씩 뒤로 미루고 제일 앞에 해당 요소 삽입
3. Cahche Hit일 경우 indexOf로 포함된 문자의 위치를 찾고, 해당 위치에서 제일 앞 요소까지 순회하면서 뒤로 한 칸씩 미룬 뒤, 제일 앞에 해당 요소 삽입
* 배열 전체를 순회 화면서 앞으로 미는 작업 대신에 배열 자르기와 shift 연산을 통해 조금 더 깔끔하게도 가능
잘못된 설명, 코드, 예외 케이스가 있다면 댓글 남겨주시면 수정하겠습니다.
728x90
'알고리즘_JS > 인프런 JS알고리즘' 카테고리의 다른 글
[이분 탐색] 뮤직비디오 (0) | 2022.04.01 |
---|---|
[투포인트] 결혼식 (0) | 2022.03.26 |
괄호 문자 제거(스택) (0) | 2022.03.25 |
모든 아나그램 찾기 (0) | 2022.03.25 |
연속 부분수열 2 (0) | 2022.03.16 |
Comments