https://programmers.co.kr/learn/courses/30/lessons/42583
Problem
Code
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int time = 0;
Queue<Integer> truck = new LinkedList<>();
Queue<Integer> bridge = new LinkedList<>();
for (int t : truck_weights) {
truck.offer(t);
}
for (int i=1; i<=bridge_length; i++) {
bridge.offer(0);
}
int sum = 0;
while(!truck.isEmpty()) {
int outTruck = bridge.poll();
sum -= outTruck;
if (sum + truck.peek() <= weight) {
int inTruck = truck.poll();
bridge.offer(inTruck);
sum += inTruck;
} else {
bridge.offer(0);
}
time++;
}
if (bridge.size() != 0) time += bridge.size();
return time;
}
}
Result