seunghyun Note

[프로그래머스] [1차] 캐시 with JS 본문

코딩테스트/프로그래머스

[프로그래머스] [1차] 캐시 with JS

승숭슝현 2024. 2. 13. 10:48
728x90
반응형

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17680

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 풀이

 

1. LRU 알고리즘을 이해하자 (push & shift)를 사용하기 [정보처리기사에서 본듯..?]

https://dailylifeofdeveloper.tistory.com/355(여기 참고!)

 

LRU 알고리즘 (Least Recentely Used) 개념 및 구현방법

안녕하세요! daily_D 입니다! 👩🏻‍💻 오늘은 페이지 교체 알고리즘 중에서 LRU에 대해서 공부해볼까요?! LRU 란? LRU(Least Recently Used)는 가장 오랫동안 참조되지 않은 페이지를 교체하는 방식입니

dailylifeofdeveloper.tistory.com

 

계속해서 틀리는 이유가 무엇일까..?

 

이유를 생각해보니 값이 있을 경우 따로 저장하지 않고 그냥 shift를 했다. 

값이 있다면 따로 저장후 그 값을 push를 해줘야 한다!

 

function solution(cacheSize, cities) {
  let result = 0;
  let arr = [];

  if (cacheSize === 0) return cities.length * 5;
  while (cities.length) {
    let shift = cities.shift().toLowerCase();
    if (arr.includes(shift)) {
      result += 1;
      let idx = arr.indexOf(shift);
      arr.splice(idx, 1);
      arr.push(shift);
    } else {
      if (arr.length === cacheSize) arr.shift();
      arr.push(shift);
      result += 5;
    }
  }

  return result;
}
728x90
반응형