public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> daysToComplete = new LinkedList<>();
for (int i = 0; i < speeds.length; i++) {
int remainingDays = (100 - progresses[i]) / speeds[i];
if ((100 - progresses[i]) % speeds[i] != 0) {
remainingDays++;
}
daysToComplete.offer(remainingDays);
}
List<Integer> resultList = new ArrayList<>();
int currentTask = daysToComplete.poll();
int count = 1;
while (!daysToComplete.isEmpty()) {
int nextTask = daysToComplete.poll();
if (currentTask >= nextTask) {
count++;
} else {
resultList.add(count);
count = 1;
currentTask = nextTask;
}
}
resultList.add(count);
int[] result = new int[resultList.size()];
for (int i = 0; i < resultList.size(); i++) {
result[i] = resultList.get(i);
}
return result;
}
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42586