fullfish 2022. 9. 12. 00:25

코드

function solution(progresses, speeds) {
  let result = [];
  let temp = [];
  let index = 0;

  while (temp.length < progresses.length) {
    let count = 0;
    for (let i = 0; i < progresses.length; i++) {
      progresses[i] = progresses[i] + speeds[i];
      if (progresses[i] >= 100 && !temp.includes(i)) {
        temp.push(i);
      }
    }
    temp = temp.sort((a, b) => a - b);
    for (let i = 0; i < temp.length; i++) {
      if (temp[i] === index) {
        count++;
        index++;
      }
    }
    if (count > 0) result.push(count);
  }
  return result;
}

 

다른 사람 코드

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;
}

며칠이 있어야지 각각의 progress가 완료되는지에 대한 날짜를 미리 구해놓고

어차피 앞에서부터 완료 카운팅을 하므로 해당 코드처럼 for문 한번돌려서 구했다