문제
내 풀이
function solution(progresses, speeds) {
var answer = [];
let days = progresses.map((progress, idx) => Math.ceil((100 - progress) / speeds[idx]));
let prev = days[0];
let sumOfFunc = 1;
for(let i = 1; i < days.length; i++){
let cur = days[i];
if(prev < cur){
answer.push(sumOfFunc);
sumOfFunc = 1;
prev = cur;
}
else sumOfFunc += 1;
}
answer.push(sumOfFunc);
return answer;
}
먼저, 작업 별 완료하는 데 소요되는 일 수(days)를 구한다. 그리고 작업 별 완료하는 데 소요되는 일 수(days)를 순회하면서 다음 두가지 경우로 나눠 처리한다.
- 현재 작업의 소요시간(cur)이 이전 작업 소요시간(prev)보다 큰 경우 이전 작업이 먼저 끝나기 때문에 정답(answer) 배열에 푸시한다. 그리고 배포 기능 수(sumOfFunc)를 1로, prev를 cur로 초기화 해준다.
- 현재 작업의 소요시간(cur)이 이전 작업 소요시간(prev)보다 작거나 같은 경우 현재 작업은 이전 작업이 끝나면 같이 배포할 수 있다. 그러므로 sumOfFunc를 1만큼 증가시킨다.