LEVEL2
progresses
speeds
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] |
a.첫번째 기능
: 93% 완료, 하루에 1%씩 작업 가능 => 7일간 작업 후 배포 가능
b. 두번째 기능
: 30% 완료, 하루에 30%씩 작업 가능 => 3일간 작업 후 배포 가능
: but, 첫 번째 기능이 미완성된 상태이므로 첫번째 기능이 배포되는 7일째 배포가능
c.세 번째 기능
: 55%가 완료, 하루에 5%씩 작업이 가능 => 9일간 작업 후 배포 가능
d. 따라서 7일째에 2개의 기능, 9일째에 1개의 기능이 배포.
이 문제는 큐, 스택 문제입니다.
정확성 | 연산시간 | 메모리 |
---|---|---|
100% | 0.09ms~0.13ms | 30.2MB |
const days = progresses.map((progress, index) => {
return Math.ceil((100 - progress) / speeds[index]);
});
let i = 0;
let j = i + 1;
while (true) {
//c. while문을 시작한다.
let passNum = 1; //그 날 배포한 갯수
if (i >= days.length) break;
//d.기준인덱스가 days.length를 넘어가면 while문을 중단한다.
//e
while (days[j] <= days[i]) { //f. 기준값 <= 비교값
j++;
passNum++;
}
//g. 기준값 > 비교값
answer.push(passNum);
i = j; //h. 배포된 것 이후부터 다시 비교
j++; //i. passNum이 1부터 시작이므로 j = j+1로 할당
//j. while 반복 끝 -> 다시 위로 이동
}
return answer;
}