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