function solution(progresses, speeds) {
const needDay = []
for(let i=0; i<progresses.length; i++){
let day = Math.ceil((100 - progresses[i]) / speeds[i]);
needDay.push(day)
}
let answer = []
let deployDay = 0; // 배포된 날짜
let lastDay = 0;
let jobCompleted = 0;
for(let i=0; i<needDay.length;i++){
// 배포 날짜 >= 필요 날짜: jobCompleted++
if(deployDay >= needDay[i]){
jobCompleted++;
}else{
// 배포날짜 < 필요날짜: answer에 jobCompleted 넣기
// 맨 처음의 경우 때문에
deployDay = needDay[i];
if(jobCompleted === 0){
jobCompleted++;
}else if(jobCompleted > 0){
answer.push(jobCompleted);
jobCompleted = 1;
}
}
}
answer.push(jobCompleted);
return answer;
}
| progresses | speeds | return |
|---|---|---|
| [93, 30, 55] | [1, 30, 5] | [2, 1] |
| [95, 90, 99, 99, 80, 99] | [1, 1, 1, 1, 1, 1] | [1, 3, 2] |
작업이 필요한 날짜:
console.log(needDay)
// 입출력1: [ 7, 3, 9 ]
// 입출력2: [ 5, 10, 1, 1, 20, 1 ]
(7, 3) (9)
(5) (10, 1, 1) (20, 1)
이렇게 배포날짜 기준으로 개발 완료 기능들임
배포날짜와 현재 작업이 필요한 날짜 비교
배포날짜 >= 작업필요날짜
하나의 묶음에 넣어야함 따라서, jobCompleted++
배포날짜 < 작업필요날짜
묶음이 끝나므로, 이전 묶음의 jobCompleted값을 answer배열에 넣기
배포날짜 변경, 현재 탐색되고 있는 기능을 jobCompleted에 포함해서 1로 초기화
단, 첫번째 인덱스의 경우엔 이전 묶음이 없으므로 단순히 jobCompleted++