풀이
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for(let i = 0, j = 0; i< days.length; i++){
if(days[i] <= maxDay) {
answer[j] += 1;
} else {
maxDay = days[i];
answer[++j] = 1;
}
}
return answer;
}
먼저 완성되기까지 필요한 날짜를 구하고,
배열의 순서대로 앞의 일들이 끝내야 다음 순서의 일을 배포할수 있으므로, 맨처음의 날을 일단 잡아둡니다.
for 문으로 일을 끝내야하는 길이많큼 도는 반복문에
만약 처음일이 배포가능 날짜안에 끝난다면 answer 배열 첫번째에다가 카운트를 올려줍니다
만약 크다면, 최소 필요한 날짜를 다음 progress 의 필요날짜로 갱신 해주고, 배열을 다음 index 로 옴긴후 카운트1을 줍니다.