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

huisso님의 프로필 이미지
huisso

작성한 질문수

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

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

LRU 코드 리뷰 부탁드립니다

작성

·

244

·

수정됨

0

function setQueue(queue, val) {
  if (queue.includes(val)) {
    queue = queue
      .slice(0, queue.indexOf(val))
      .concat(queue.slice(queue.indexOf(val) + 1));
    queue.unshift(val);
  } else {
    queue.pop();
    queue.unshift(val);
  }
  return queue;
}

function solution(s, n, arr) {
  let queue = new Array(s).fill(0);

  for (const val of arr) {
    if (queue.length === s) {
      queue = setQueue(queue, val);
    } else {
      queue = setQueue(queue, val);
    }
  }
  return queue.join(" ");
}

hit, miss 인 경우의 로직을 setQueue로 함수화해서 처리를 해보았는데, 혹시 틀리거나 예외케이스에서 틀릴 경우가 생길까요?

답변 1

1

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

안녕하세요^^

반례없이 잘 짜신 코드입니다.

아래에서 코드라인이 똑 같은 것을 호출하는데 왜 굳이 if else로 구분해서 호출한 것인지 궁금하네요.

if (queue.length === s) {
      queue = setQueue(queue, val);
    } else {
      queue = setQueue(queue, val);
    }
huisso님의 프로필 이미지
huisso
질문자

답변 감사합니다!
기존에 분기처리한 흔적을 정리하지 못했네요..!
감사드립니다!

huisso님의 프로필 이미지
huisso

작성한 질문수

질문하기