프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
progresses speeds return [93, 30, 55] [1, 30, 5] [2, 1] [95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1] [1, 3, 2]
우선 작업이 얼마나 남았는지 계산을 해주고, 남은 작업을 하는데 얼마나 걸리는지 계산해주어야 할 것 같다! 그래서 남은 작업량을 계산하기 위해서 100에서 progress만큼 빼줬다. 100-progress를 작업속도로 나눠주면 남은 작업을 처리하는데 필요한 일수가 계산되겠구나! 100-progress를 speed로 나눠주고, 하루에 한번만 배포할 수 있으니 남은 일수는 무조건 정수여야겠다! 그래서 위에서 계산한 값을 올림처리해주었다! 그리고 앞 작업이 다 끝나지 않으면 뒷 작업이 배포되지 못하는 특성이 있어서 가장 오래 걸리는 작업이 얼마나 걸리는지 보기 위해서 maxDay를 넣었다! 초기 값은 가장 앞에 있는 값으로 넣었다. 순서대로 작업을 진행하는 Queue방식이니깐!
이제 남은 작업 일수 배열에서 하나씩 꺼내와서 가장 오래 걸리는 작업 일수와 크기 비교를 한다. 만약 가장 오래 걸리는 작업 일수보다 배열에서 꺼내온 작업 일수가 더 적거나 같다면 이는 앞에 작업이 끝나지 않아서 배포될 수 없음을 뜻한다. 따라서 우리가 출력해줘야하는 '배포되는 기능의 개수 배열인 answer'의 첫번째 값에 1을 더해준다. 만약 가장 오래 걸리는 작업 일수보다 배열에서 꺼내온 작업 일수가 더 크다면 작업이 끝나 그동안의 기능들을 배포하고, 다른 기능을 배포할 수 있음을 뜻한다. 따라서 배열 answer의 두번째 값에 1을 주고 maxDay를 배열에서 꺼내온 작업 일수로 변경해준다.
이런식으로 반복하고, 마지막에 answer 배열을 출력해주면 끝!