https://programmers.co.kr/learn/courses/30/lessons/42586
핵심은 미리 걸리는 일수를 계산하는 것이다.
그리고 일수를 하나씩 꺼내서 나머지 일수들과 비교하여 자신보다 작은 일수들의 카운트 + 1 을 answer 배열에 넣는식으로 진행한다.
max
변수를 두어서 일수를 꺼낼 때 이미 카운트를 한 일수는 무시한다.
function solution(progresses, speeds) {
var answer = [];
let days = []; // 7, 1, 3, 9
// 미리 걸리는 일수를 구해놓는다.
for (let i = 0; i < progresses.length; i++){
let remain = 100 - progresses[i]
let d = Math.ceil(remain / speeds[i]);
days.push(d);
}
let count = 0;
let max = 0;
// 7, 1, 3, 9
while (days.length){
count++;
let shift = days.shift();
if (shift > max) max = shift;
if (!days.length) {
answer.push(count)
break;
}
if (max < days[0]){
answer.push(count);
count = 0;
}
}
return answer;
}