[프로그래머스/JavaScript]스택/큐--기능개발

장현광·2021년 7월 12일
0

알고리즘

목록 보기
6/8
post-thumbnail

#1 speeds에 맞게 progresses 진행시키기

  1. progresses 배열에 원소가 남아 있는 한 while문으로 반복시킨다.
  2. speedsprogresses 배열의 같은 인덱스에 해당하는 짝을 묶어 더해준다.
  3. 진행도가 100 초과라면 더하지 않는다.
function solution(progresses, speeds) {
  var answer = []
  
  while(progresses.length > 0) {
    for(let i = 0; i < speeds.length; i++) {
      if(progresses[i] < 100) {
        progresses[i] += speeds[i]
      }
    }
  }
}

#2 첫 번째 작업이 100%가 된다면

  1. 배포 갯수 카운트를 위한 변수 var session = 0을 정의
  2. 첫 번째 작업의 진도가 100%인 동안의 상황인 while(progresses[0] >= 100)을 정의
  3. while문을 거칠 때마다 progressesspeeds배열의 첫 번째 원소를 제거
  4. while문을 거칠 때마다 answer[session]을 1로 초기화하거나 +1을 해준다.
  5. while문을 거치지 않을 경우에는 session의 값을 answer.length로 한다.
function solution(progresses, speeds) {
  var answer = []
  var session = 0

  // progresses 배열에 원소가 남아있다면
  while(progresses.length > 0) {
    // speeds의 index에 맞춰 progresses에 더해준다.
    for(let i = 0; i < speeds.length; i++) {
      // 진도가 100 미만인 경우에만 더해준다.
      if(progresses[i] < 100) {
        progresses[i] += speeds[i]
      }
    }
  
    // progresses의 첫 번째 원소가 100 이상일 경우
    while(progresses[0] >= 100) {
      // progresses와 speeds에 각각 첫 번째 원소를 제거하고
      progresses.shift()
      speeds.shift()
      // answer[session]이 없다면 1로 초기화, 있다면 + 1
      answer[session] = answer[session] ? answer[session] + 1 : 1
    }
    
    // 직전의 while문을 거치지 않았을 경우 session 값을 정의
    session = answer.length
  }
  
  return answer
}

profile
프론트!

0개의 댓글