👍 2022년 1월 29일
<script>
function solution(progresses, speeds) {
var answer = [];
while(progresses.length !== 0) {
let cnt = 0;
let deleteCnt = 0;
speeds.forEach((speed, idx) => {
progresses[idx] += speed
})
for (let progress of progresses) {
if (progress >= 100) {
deleteCnt++;
cnt++;
}else break
}
cnt !== 0 && answer.push(cnt);
progresses.splice(0, deleteCnt);
speeds.splice(0, deleteCnt);
}
return answer;
}
</script>
만약 progresses에 현재 progress가 1이고 speed가 1인 작업이 있다면 while문을 최소 99번을 돌아야해서 꽤나 비효율적인 코드다.
중간에 생각난게 첫 번째 작업의 progress가 100이 되려면 며칠이 걸리는지 계산해서 그 날짜 뒤에 뒷작업들의 progress는 어떻게 변하는지 확인하는 것이다.
다른 사람들 풀이를 보니까 역시나 이렇게 푼 사람들이 있었고 확실히 그게 속도가 빠른 것 같다.