Lv.2 기능개발

ujinujin·2022년 1월 29일
0

코딩테스트 뿌시기

목록 보기
25/57

🤖문제

👍 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는 어떻게 변하는지 확인하는 것이다.

다른 사람들 풀이를 보니까 역시나 이렇게 푼 사람들이 있었고 확실히 그게 속도가 빠른 것 같다.

profile
백수와 취준생 그 사이 어디

0개의 댓글