import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int queueSum(Queue<Integer> queue) {
int sum = 0;
for(int n : queue) {
sum += n;
}
return sum;
}
public int solution(int bridge_length, int weight, int[] truck_weights) {
Queue<Integer> bridge = new LinkedList<>();
for(int i = 0; i < bridge_length; i++){
bridge.add(0);
}
int time = 0;
bridge.poll();
bridge.add(truck_weights[0]);
truck_weights = Arrays.copyOfRange(truck_weights, 1, truck_weights.length);
time++;
while(truck_weights.length != 0 || queueSum(bridge) != 0){
if(truck_weights.length != 0){
int sum = queueSum(bridge) + truck_weights[0];
if(sum > weight){
bridge.poll();
sum = queueSum(bridge) + truck_weights[0];
if(sum <= weight){
bridge.add(truck_weights[0]);
truck_weights = Arrays.copyOfRange(truck_weights, 1, truck_weights.length);
time++;
}else{
bridge.add(0);
time++;
}
}else{
bridge.poll();
bridge.add(truck_weights[0]);
truck_weights = Arrays.copyOfRange(truck_weights, 1, truck_weights.length);
time++;
}
}else{
bridge.poll();
bridge.add(0);
time++;
}
}
return time;
}
}
기본적으로 수업 시간에 배운 프린터를 기반으로 작성
→ 큐를 더해주는 메서드를 생성해서 이 문제 해결.