기능개발

김현민·2021년 9월 28일
0

Algorithm

목록 보기
95/126
post-thumbnail

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

  const queue = []

  for (let i = 0; i < progresses.length; i++) {
    
//    각각의 진행률을 계산,
    queue.push(Math.ceil((100 - progresses[i]) / speeds[i]))
  }

  
  let cnt = 0

  let st = []

  while (queue.length !== 0) {

// 기준으로 삼을 맨 첫번째 요소
    let queueNum = queue[0]
    
    //st 배열에 넣는다
    st.push(queueNum)
    queue.shift()
    
    
// 넣어진 스택(st)이 더 크거나 같으면 계속해서 st에 넣으면서 cnt를 증가시켜준다
    // 더 작다면 기본값 기본값 하루(1)을 더하고 answer배열에 추가한다. 
    // 다음 진행을 위해 st를 초기화하고 다시 0으로 초기화시킨다.
    if (queue[0] <= st[0]) {
      st.push(queueNum)
      cnt++
    } else {
      cnt++
      answer.push(cnt)
      st = []
      cnt = 0
    }
  }

  return answer
}

solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1])
// solution([93, 30, 55], [1, 30, 5])

Math.ceil((100 - progresses[i]) / speeds[i]) 여기서

profile
Jr. FE Dev

0개의 댓글