Research/Coding Test

스택/큐_기능개발

RIEM 2023. 11. 19. 03:15
728x90

나의 풀이

function solution(progresses, speeds) {
  var deployCounter = [];

  while(progresses.length > 0) {
    
    let completed = 0;

    progresses.forEach((el, idx) => {
      progresses[idx] += speeds[idx]
    })
    
    while(progresses[0] >= 100) {  
      progresses.shift();
      speeds.shift();
      completed++;
    }
    
    if (completed > 0) {
      deployCounter.push(completed)
    }
  }
  return deployCounter;
}

progresses 배열에 아직 요소가 남아있는 한 무한 루프를 돌린다. 루프 도는 동안 각 자리의 progresses에 각 자리의 speed를 더 해주고, progresses를 queue로 보았을 때 peek 시 100 넘어가면 dequeue해준다. 그리고 그 dequeue 카운트를 저장해준다. dequeue한 다음에도 첫번째 배열이 100 이상이면 계속 dequeue하고 카운트를 저장해준다. 이를 while 반복문으로 끝까지 간다. 

728x90