[ 프로그래머스 ] #42583 : 다리를 지나는 트럭 - JAVA

🔗 다리를 지나는 트럭

import java.util.Queue;
import java.util.LinkedList;
class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        // bridge_length : 다리에 올라갈 수 있는 최대 트럭 수
        // weight : 다리가 견딜수 있는 무게
        // truck_weights : 트럭 별 무게 

         Queue<Integer> bridge = new LinkedList<>();
        int time = 0;           // 총 걸린 시간
        int bridgeWeight = 0;   // 다리 위 총 무게
        int idx = 0;            // 현재 처리할 트럭 인덱스

        // 초기 다리 상태: 다리 길이만큼 0으로 채움
        for (int i = 0; i < bridge_length; i++) {
            bridge.offer(0);
        }

        while (idx < truck_weights.length) {
            time++;

            // 다리에서 트럭 한 대 내리기
            bridgeWeight -= bridge.poll();

            // 새로운 트럭 올릴 수 있다면
            if (bridgeWeight + truck_weights[idx] <= weight) {
                // 다리에 추가
                bridge.offer(truck_weights[idx]);
                // 무게 업데이트
                bridgeWeight += truck_weights[idx];
                // 다음 트럭
                idx++;
            } else {
                // 무게 초과 시, 트럭을 못 올리고 빈 공간 채움
                bridge.offer(0);
            }
        }

        // 마지막 트럭이 다리에서 완전히 빠져나가는 시간 추가
        return time + bridge_length;
    }
}