맨날 헷갈려서 검색하는 스택과 큐...
스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO..!!!
계산해둔 잔여 작업일을 큐에 담는 작업을 먼저 수행했다.
이후 workDays.poll();
로 하나씩 추출해
이전 작업일과 비교하여 동시 배포 개수 배열 answer를 구했다.
answer.stream().mapToInt(i->i).toArray();
이거는
ArrayList를 배열로 변환하기 위해 사용했다.
import java.lang.Math;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> workDays = new LinkedList<>();
List<Integer> answer = new ArrayList<>();
for (int i=0; i<progresses.length; i++) {
int day = (int) Math.ceil( (double) (100 - progresses[i]) / speeds[i] ); // 올림
workDays.add(day);
}
int prevVal = 0;
int flag = -1;
while (!workDays.isEmpty()) {
int curVal = workDays.poll();
if (curVal > prevVal) {
answer.add(1);
flag++;
prevVal = curVal;
} else {
answer.set(flag, answer.get(flag) + 1);
}
}
return answer.stream().mapToInt(i->i).toArray();
}
}