인프런 커뮤니티 질문&답변

je님의 프로필 이미지
je

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

5. LRU(카카오 캐시 변형 : 삽입정렬응용)

hit가 발생한 후부터만 뒤로 하나씩 미는 방법

작성

·

268

0

function solution(size, arr) {
  const cache = new Array(size).fill(0);
  let hit;
  for (let i = 0; i < arr.length; i++) {
    hit = false;
    for (let j = cache.length - 1; j >= 0; j--) {
      if (hit) {
        cache[j + 1] = cache[j];
      }
      if (cache[j] === arr[i]) {
        hit = true;
      }
    }
    if (!hit) {
      cache.unshift(arr[i]);
      cache.pop();
    } else cache[0] = arr[i];
  }

  return cache;
}

바깥 for문 처음에 캐시 배열에 찾는 값이 있는지 확인하는 반복문을 한번 돌지 않고, 한번만 반복문을 돌면서 hit가 발생한 이후부터만 뒤로 한칸씩 미는 방법으로 코드를 짜봤습니다.

이렇게 작성해도 괜찮을까요? 반례 있을까요?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

좋은 코드네요. 잘 하신 코드입니다.

je님의 프로필 이미지
je

작성한 질문수

질문하기