문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42586
function solution(progresses, speeds) {
let answer = [];
while (speeds.length > 0) { // speed 배열길이가 0이 될때까지
let cnt = 0;
for (let i = 0; i < speeds.length; i++) { // progress와 speed 짝지어 더하기
if (progresses[i] < 100) { // 100이 넘어가면 그만 더하기
progresses[i] += speeds[i];
}
}
while (progresses[0] >= 100) { // 맨앞의 progress배열이 100이 넘으면 shift
progresses.shift();
speeds.shift(); // speed도 shift
cnt++;
}
if (cnt > 0) {
answer.push(cnt);
}
}
return answer;
}
function solution(progresses, speeds) {
let answer = [];
let days = progresses.map((progresses, idx) =>
Math.ceil((100 - progresses) / speeds[idx])
);
let cnt = 1;
let maxDay = days[0];
for (let i = 1; i < days.length; i++) {
if (days[i] <= maxDay) {
cnt++;
} else {
maxDay = days[i];
answer.push(cnt);
cnt = 1;
}
}
answer.push(cnt);
return answer;
}
Ceil() - 올림 함수
days 배열에는 예시 1로 들면 [7,3,9] 가 들어가 있다
maxDays변수는 days[0]으로 초기화 시켜주고, days배열을 순회한다
현재 순회하는 배열 인덱스의 값이 maxDays보다 작으면 cnt증가, 반대이면 maxDays를 현재 배열 인덱스값으로 할당하고 cnt를 answer에 삽입, cnt는 다시 1로 초기화