문제설명
- 각 기능은 진도가 100%일때 서비스 반영
- 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포
- 작업의 진도가 적힌 정수 배열 progresses, 각 작업의 개발 속도가 적힌 정수 배열 speeds
- 각 배포마다 몇 개의 기능이 배포되는지 반환
제한사항
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하
- 작업 진도는 100미만의 자연수
- 작업 속도는 100이하의 자연수
- 배포는 하루에 한 번만 할 수 있으며 하루의 끝에 이루어짐
풀이
function solution(progresses, speeds) {
let check=1;
const result = [];
while(progresses.length !== 0){
progresses = progresses.map((progress,idx)=>progress += speeds[idx]);
if(progresses[0] >= 100){
for(let i=1;i<progresses.length;i++){
if(progresses[i]<100){
check = i;
break;
}else{
check = i+1;
}
}
result.push(progresses.splice(0,check).length);
speeds.splice(0,check);
}
}
return result;
}
+ 다른 해결 방법 추가
function solution(progresses, speeds) {
const result = [];
while (progresses.length > 0) {
progresses = progresses.map((progress, index) => progress + speeds[index]);
if (progresses[0] >= 100) {
let endProgress = 0;
while (progresses[0] >= 100) {
progresses.shift();
speeds.shift();
++endProgress;
}
result.push(endProgress);
}
}
return result;
}
체크포인트
- progresses와 speeds는 일심동체...메모...
- 이전 코드는
큐
, 스택
개념을 활용하지 않아 splice
메소드를 사용했다.
shift
메소드로 불필요한 변수 선언을 줄였다.