function solution(progresses, speeds) {
const answer = [];
let onProgress = 0;
let day = 0;
let count = 0;
const requiredDays = progresses.map((progress, i) => {
const remainning = 100 - progress;
return Math.ceil(remainning / speeds[i]);
});
requiredDays.forEach(requiredDay => {
if (!onProgress) onProgress = requiredDay;
if (onProgress < requiredDay) {
onProgress = requiredDay;
day++;
count = 0;
};
count++;
answer[day] = count;
});
return answer;
}
- requiredDays 배열에 각 작업마다 배포까지 필요한 기간을 구함
- onProgress보다 필요한 기간이 더 작은 작업의 경우 같은 day(배포일)에 count(작업 수)를 +1 해서 배포
- onProgress보다 필요한 기간이 더 긴 작업의 경우 day(배포일) +1을 해서 다른 날에 배포