문제

progresses 순서대로 기능 배포.
뒤 기능이 먼저 100%가 되어도, 앞 기능 배포 전까지 대기.

조건

  • 기능 개수: 100개 이하
  • 진행률: 100 미만
  • 속도: 100 이하
  • 배포: 하루 끝에 1번
  • 앞 기능 배포 시, 완료된 뒤 기능도 함께 배포

핵심

  • 완료일 = ceil((100 - 진행률) / 속도)
import java.io.*;
import java.util.*;
 
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int size = progresses.length;
        int[] workdays = new int[size];
        
        for(int i = 0 ; i < size; i++){
            workdays[i] = (100-progresses[i]) % speeds[i] == 0 
                            ? (100-progresses[i]) / speeds[i]
                            : (100-progresses[i]) / speeds[i] + 1;
        }
        
        
        List<Integer> list = new ArrayList<>();
        
        int listIdx = 0;
        list.add(1); 
        
        int checkWait = workdays[0];
        
        for(int i = 1 ; i < size ; i++){
            if(workdays[i] <= checkWait) {
                list.set(listIdx,list.get(listIdx)+1);
            }
            else{
                list.add(1);
                checkWait = workdays[i];
                listIdx++;
            }
        }
        
        return list.stream().mapToInt(i->i).toArray();
    }
}