function solution(progresses, speeds) {
let answer = [];
let ch = Array.from({length:speeds.length}, () => 0);
for (let i=0; i<progresses.length; i++) {
while (progresses[i] < 100) {
progresses[i] += speeds[i]
ch[i]++;
}
}
let cnt=1;
let max=ch[0];
for (let i=1; i<ch.length; i++) {
cnt++;
if (max < ch[i]) {
answer.push(cnt-1);
cnt=1;
max=ch[i];
}
if (i==ch.length-1) answer.push(cnt);
}
return answer;
}
// console.log(solution([93, 30, 55], [1, 30, 5]));
// console.log(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]));
console.log(solution([1, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]));
days를 구할 때, 나는 while문으로 하나하나 넣어줬다면, 이 풀이는 수학적으로 100-progress/speeds[idx]로 해결했다.
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;
}
// console.log(solution([93, 30, 55], [1, 30, 5]));
// console.log(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]));
console.log(solution([1, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]));
shift()로 배포 작업 표현한 풀이
function solution(progresses, speeds) {
var answer = [];
while(speeds.length > 0) {
// 개발
for(let i in speeds) {
if(progresses[i] < 100) {
progresses[i] += speeds[i];
}
}
// 배포
let deploy_count = 0;
while(progresses[0] >= 100) {
progresses.shift();
speeds.shift();
deploy_count++;
}
if(deploy_count > 0) {
answer.push(deploy_count);
}
}
return answer;
}
// console.log(solution([93, 30, 55], [1, 30, 5]));
// console.log(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]));
console.log(solution([1, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]));