[ 프로그래머스 ] #42586 : 기능개발 - JAVA

🔗 기능개발

import java.util.*;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
       // progresses : 작업 진도, speeds : 작업 속도
        Deque<Integer> queue=new ArrayDeque<>();
        int n=progresses.length;

        int[] dayLeft=new int[n];
        // 남은 일수 계산
        for(int i=0;i<n;i++){
            dayLeft[i]=(int)Math.ceil((100.0-progresses[i])/speeds[i]);
        }

        int count=0;//배포될 작업 수 카운트
        int maxDay=dayLeft[0]; // 기준 배포 일

        for(int i=0;i<n;i++){
            if(dayLeft[i]<=maxDay){ // 기준일이 다음 완료보다 크면
                count++;// 같이 배포
            }else{ // 기준일보다 작으면
                queue.add(count);
                count=1;// 초기화
                maxDay=dayLeft[i];
            }
        }
        queue.add(count); // 마지막에 카운트된 작업 같이 배포
        return queue.stream().mapToInt(Integer::intValue).toArray();
    }
}