개발 블로그

[프로그래머스/Javascript/Stack+Queue] 기능개발 본문

IT/Programmers

[프로그래머스/Javascript/Stack+Queue] 기능개발

파티에 2021. 4. 6. 22:32

1. 문제설명(출처: programmers.co.kr/learn/courses/30/lessons/42586)

2. 문제풀이
1)  시간 순서에 따라서 배포되는 기능의 갯수를 저장하기 위해 answer이라는 stack을 생성한다.
2) 개발중인 기능의 갯수만큼 아래의 명령을 반복한다.
  2-1) 배포할 기능의 갯수를 저장할 cnt 변수를 생성한다.
  2-2) 각각의 기능에 대하여 개발 속도만큼 개발을 진행한다.
  2-3) 먼저 배포되어야할 기능이 배포준비가 완료되었다면, 아직 배포준비가 안된 기능이 나올 때까지 아래의 명령을 반복한다.
     2-3-1) 현재 작업을 배포한다.
     2-3-2) 현재 작업을 종료한다.(더 이상 개발하지 않음)
     2-3-3)  배포할 기능의 갯수에 1을 더해준다.
  2-4) 배포할 기능이 있는지 확인한다. 
      2-4-1) 배포할 기능이 있다면 배포할 기능의 갯수를 answer에 push한다.
3) 결과 반환

3. 결과코드

function solution(progresses, speeds) {
  var answer = [];
  while(progresses.length){
    let cnt = 0
    progresses = progresses.map((progresses, i) => progresses + speeds[i])
    while(progresses[0] >= 100){
      progresses.shift()
      speeds.shift()
      cnt += 1
    }
      
    if(cnt != 0){    
      answer.push(cnt)
    }
  }
  return answer;
}