https://programmers.co.kr/learn/courses/30/lessons/42586
1. 기능의 진도가 100%일 떄 서비스에 반영할 수 있다.
2. 앞의 기능이 아직 진도가 100%가 아니라면 앞의 기능과 함께 배포된다.
입력: [progresses, speeds]
- progress: 100 이히의 배열길이
- 각 원소는 100 미만의 자연수
- speeds: 100 이하의 배열길이
- 각 원소는 100 이하의 자연수
- 출력: 한번에 배포되는 기능의 갯수를 배열로 출력
1.
의 배열을 순환한다.function solution(progresses, speeds) {
const pastDate = []; // 며칠 걸리는지 저장될 배열
const result = []; // 결과가 저장될 배열
let bigDate = 0; // 현재 지나온 요소중 가장 큰 요소
let completed = 1; // 배포할 개수
// pastDate에 며칠이 걸리는지 저장해줄 for문
for (let i=0; i<progresses.length; i++) {
const needDate = Math.ceil((100 - progresses[i]) / speeds[i]);
pastDate.push(needDate);
}
// for문의 두번째 요소부터 시작할것임
// 그러므로 첫번째 요소를 가장 큰 값으로 넣어둠
bigDate = pastDate[0]
for (let i=1; i<pastDate.length; i++) {
if (pastDate[i] <= bigDate) {
completed++;
}
else {
bigDate = pastDate[i];
result.push(completed);
completed = 1;
}
}
result.push(completed);
return result;
}
const progresses = [95, 90, 99, 99, 80, 99];
const speeds = [1, 1, 1, 1, 1, 1];
const result = solution(progresses, speeds);
console.log(result);
1.
pastDate에 며칠이 걸리는지 저장한다.
2.
bigDate = pastDate[0]
3.
for i = 1 ~ pastaDate.length
3.1
if pastDate[i] <= bigDate:
completed ++
3.2
if pastDate[i] > bigDate:
bigDate = pastDate[i]
result.push(completed)++
completed = 1
4.
result.push
4에서 한번 더 push를 해주는 이유는 배열의 끝에 도달해도 계산된 completed는 push되지 않기 때문이다.