💡 들어가기 앞서 안내말
이전에 진행했던 '나는 무엇을 풀었는가' 시리즈를 통해 프로그래머스
Level 0
부터 다시 풀어보는 시간을 가졌는데, 어느덧 벌써Level 2
에 진입했다.이에 밀린 문제들에 대해 시리즈를 이어가는 대신, 매일 매일 푼 문제들에 대해 정리하여 포스팅하는 방식으로 변경하려고 한다.
알고리즘을 다시 공부하는 계기가 되었던
나는 무엇을 풀었는가 시리즈
는 마무리하고, 앞으로는 데일리풀이를 통해 알고리즘 공부를 이어가보겠다!!![]()
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
console.log(solution([93, 30, 55], [1, 30, 5])); // [2, 1]
console.log(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1])); // [1, 3, 2]
function solution(progresses, speeds) {
let result = [];
while (speeds.length > 0) {
// 개발
progresses.forEach((_, i) => (progresses[i] += speeds[i]));
//배포
let deployDay = 0;
while (progresses[0] >= 100) {
progresses.shift();
speeds.shift();
deployDay++; // 배포는 하루에 한번만 할 수 있기 때문에 배포하면 하루가 지나가게된다.
}
if (deployDay > 0) {
result.push(deployDay);
}
}
return result;
}
function solution(progresses, speeds) {
let result = [];
let n = 0; // 인덱스 역할
while (n < progresses.length) {
progresses.forEach((_, i) => (progresses[i] += speeds[i]));
let deployDay = 0;
while (progresses[n] >= 100) {
n++;
deployDay++;
}
if (deployDay > 0) {
result.push(deployDay);
}
}
return result;
}
shift로 배열을 조작하지 않고, 변수 n을 이용해 index를 이동하는 방법도 가능하다.