
초기 풀이
const getDays = (progresses, speeds) => {
const days = []
for(let i = 0; i < progresses.length; i++){
days.push(Math.ceil((100 - progresses[i])/speeds[i]))
}
return days
}
function solution(progresses, speeds) {
var answer = [];
const days = getDays(progresses, speeds)
let max = days[0];
let count = 0;
days.forEach((fixed, idx, origin) => {
if(fixed > max) {
answer.push(count);
if(idx === days.length-1) return answer.push(1)
count = 0
}
max = Math.max(max,fixed)
if(fixed <= max) {
count += 1
if(idx === days.length-1)answer.push(count)
}
})
console.log(days)
return answer;
}
개선한 풀이
const getDays = (progresses, speeds) => {
const days = []
for(let i = 0; i < progresses.length; i++){
days.push(Math.ceil((100 - progresses[i])/speeds[i]))
}
return days
}
function solution(progresses, speeds) {
var answer = [];
const days = getDays(progresses, speeds)
let max = days[0];
let count = 1;
for(let i = 1; i < days.length; i++){
if(max >= days[i]){
count++
} else{
answer.push(count)
max = days[i]
count = 1
}
}
answer.push(count)
return answer;
}
조건 처리 부분이 조금 복잡하다는 느낌이 들어 수정하였음
days[0]은 무조건 count에 들어가니 count = 1, for문의 i는 1부터 시작하게 하였고, 조건부 로직을 간소화함.