import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
List<Integer> list = new ArrayList<>();
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < progresses.length; i++) {
int temp = (int) Math.ceil((100.0 - progresses[i]) / speeds[i]);
if (queue.peek() != null) {
if (queue.peek() >= temp) {
queue.add(queue.peek());
}
else {
list.add(queue.size());
queue.clear();
queue.add(temp);
}
} else {
queue.add(temp);
}
}
list.add(queue.size());
int[] answer = list.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
남은 작업 일수 계산을 위해 천장값을 사용하였습니다. 큐의 제일 앞에 값이 있고, 이 값이 현재의 값보다 크거나 같을 경우 이 값을 큐에 추가하여 가장 앞에 있는 기능과 배포일수를 맞췄습니다. 그러다가 가장 앞에 있는 기능의 배포일수보다 큰 값이 등장하면 현재까지의 큐의 크기를 리스트에 추가하고, 큐를 초기화하여 다시 반복하였습니다.