내가 작성한 답
function solution(progresses, speeds) {
const answer = [];
const total = 100;
const rest = progresses.map(value => total - value);
const result = [];
for (let i = 0; i < rest.length; i++) {
const day = Math.ceil(rest[i] / speeds[i]);
result.push(day);
}
let maxDay = result[0];
let count = 1;
for (let i = 1; i < result.length; i++) {
if (result[i] <= maxDay) {
count++;
} else {
answer.push(count);
count = 1;
maxDay = result[i];
}
}
answer.push(count);
return answer;
}
다른 답
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for(let i = 0, j = 0; i< days.length; i++){
if(days[i] <= maxDay) {
answer[j] += 1;
} else {
maxDay = days[i];
answer[++j] = 1;
}
}
return answer;
}
해석
- 완료 일수를 별도의 배열 result을 사용하여 계산했음.
- 매일 공개될 작업 수를 결정하기 위해 두 번의 루프를 사용.
- 작업 진행 상황을 추적하기 위해 추가 변수 maxDay와 count를 사용.
- 직접적으로 완료 일수를 계산하기 위해 map 함수를 사용.
- answer 배열을 채우기 위해 단일 루프를 사용.
- 진행 상황을 추적하기 위해 단일 인덱스 j를 사용.
- 정리
단일 루프와 추가 변수를 덜 사용하여 같은 결과를 얻음.
줄일 수 있는 것은 줄이는게 좋음.