• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

23.03.14 00:53 작성 조회수 218

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

안녕하세요^^

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