// https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=javascript
function solution(progresses, speeds) {
var answer = [];
// 소요되는 작업일수로 변경
const days = progresses.slice(0).reduce((acc,cur,index,array)=>{
let count = 0;
for(cur; cur < 100; speeds[index] ){
count ++
cur = cur + speeds[index]
}
return acc = [...acc, count]
},[])
// 배열 순회 마지막 인덱스와 배포갯수 설정(기본 자기자신 1)
let lastIndex = 0;
let deploy = 1;
for(lastIndex; lastIndex <= days.length; lastIndex++){
for(let i = lastIndex + 1; i <= days.length; i++ ){
// 이중 반복문으로 현재 선택된 값과 앞뒤로 비교
if(days[lastIndex] >= days[i]){
// 기준값 보다 작으면 배포 숫자에 더한다
deploy ++
} else {
// 기준값 보다 크다면 배포이므로 answer에 여태 쌓인 배포숫자를 push한다.
// 이미 배포되어 빠진 기능이 있기 때문에 lastIndex에 현재 보고 있는 index -1을 재선언
// deploy 1로 재선언
// 뒤에 있는 index는 순회할 필요 없어졌기 때문에 break로 탈출
lastIndex = i-1
answer.push(deploy)
deploy = 1
break;
}
}
}
return answer;
}
Comment