function solution(progresses, speeds) {
var answer = [];
let count = 1;
let standard = ((100-progresses[0])/speeds[0])
let standardCeil = Math.ceil(standard)
for(let i=1; i<progresses.length;i++) {
let day = ((100-progresses[i])/speeds[i])
let ceil = Math.ceil(day)
if(standardCeil < ceil) {
console.log(ceil)
standardCeil = ceil
answer.push(count);
count=1
}
else {
count++
}
}
answer.push(count);
return answer;
}
progresses 는 현재 작업된 진도의 퍼센티지이고, speeds는 하루에 진도를 나갈 수 있는 퍼센티지이다. 각 진도별로 며칠걸리는지 계산하기 위해
let day = ((100-progresses[i])/speeds[i])
let ceil = Math.ceil(day)
를 사용했다. 예를들어 진도량이 30퍼이고 하루 작업속도가 30퍼이라고 치고 위 식에 대입해보면 ((100-30)/30) 이므로 2.xxxx 가 나온다. 하지만 뒤에 소수점이 나오면 안되기 때문에 ceil 메서드를 활용하여 무조건 올림 처리를 해버린다. 때문에 3일의 작업 기간이 걸리게된다.
첫번째 작업의 소요기간을 standardCeil이라는 변수에 기준점으로 초기화한다.
즉,
기준 소요기간 7일 -> 두번째 작업 소요기간은 3일로 기준 보다 금방 끝나 배포를 못하여 count+1 -> 세번째 작업 소요기간은 9일로 기준보다 오래걸림 -> 기준점을 9일로 갱신 -> 현재 count 횟수인 2를 answer에 push함 -> 다시 count를 1로 초기화함 -> for문의 종료 된 후 현재 count 값인 1을 한번 더 push 하여 최종값 리턴
감사합니다