LEVEL4_프로그래머스_선입 선출 스케줄링

Written on September 19, 2019

문제

처리해야 할 동일한 작업이 n 개가 있고, 이를 처리하기 위한 CPU가 있습니다.

이 CPU는 다음과 같은 특징이 있습니다.

  • CPU에는 여러 개의 코어가 있고, 코어별로 한 작업을 처리하는 시간이 다릅니다.
  • 한 코어에서 작업이 끝나면 작업이 없는 코어가 바로 다음 작업을 수행합니다.
  • 2개 이상의 코어가 남을 경우 앞의 코어부터 작업을 처리 합니다.

처리해야 될 작업의 개수 n과, 각 코어의 처리시간이 담긴 배열 cores 가 매개변수로 주어질 때, 마지막 작업을 처리하는 코어의 번호를 return 하는 solution 함수를 완성해주세요.

풀이

function solution(n, cores) {
  if (n <= cores.length) {
    return n;
  } else {
    let answer = 0;
    let remain = n - cores.length;
    const workReducer = works => {
      let min = Math.min.apply(null, works);
      let newWorks = [];
      for (let i = 0; i < works.length; i++) {
        if (works[i] === min) {
          if (remain === 1) {
            answer = i + 1;
            return;
          }
          remain--;
          newWorks.push(cores[i]);
        } else {
          newWorks.push(works[i] - min);
        }
      }
      workReducer(newWorks);
    };
    workReducer(cores);
    return answer;
  }
}


이 문제는 효율성에서 통과하지 못했다..ㅠ


문제바로가기

선입 선출 스케줄링

👩🏻‍💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻‍♀️

in the process of becoming the best version of myself