알고리즘- 선입선출

Jaewoong2·2020년 8월 26일
0

알고리즘공부

목록 보기
7/35

출처: 제주코딩베이스켐프 자바스크립트 알고리즘 93번문제 -

내가 푼 답

const incomingPages = 'B C B A E B C E'.split(' ');
const memory = [];
const frame = 3;
let oldIndex = 0;
let time = 0;

while(incomingPages.length > 0) {
    if(oldIndex === frame) {
        oldIndex = oldIndex - frame;
    }
    const incomingPage = incomingPages.shift();
    if(!memory.includes(incomingPage)) {
        memory.splice(oldIndex, 1, incomingPage)
        oldIndex = oldIndex + 1;
        console.log('miss!!')
        time = time + 6;
    } else {
        console.log('hit!!')
        time = time + 1;
    }
}

console.log(time, '실행시간')
  • 선입선출 은 맨 처음에 들어온 것을 바로 빼는 것이다. (군대, 미소지기 할떄 안하면 혼나는거..ㅠㅠ)

  • 근데 위와 같이 메모리 위치는 변하지않고 일찍들어온 순서대로 바꿔주는 식으로 하려면 memory에 순서대로 넣고,

  • 가득차게 되면 0번부터 2번까지 차례 대로 바꿔주면 된다고 생각했다

  • 0번 부터 2번까지 차례를 정해주는 것을, oldIndex로 정하고, oldIndex가 메모리의 크기만큼 되게 되면 그 크기만큼 뺴서 다시 0으로 만들었다.

profile
DFF (Development For Fun)

0개의 댓글