[プログラマー]橋を渡るトラック


Link


https://programmers.co.kr/learn/courses/30/lessons/42583

Code

import java.util.*;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        Deque<Integer> deque = new ArrayDeque<>();
        for(int i = 0; i < bridge_length; i++) {
            deque.add(0);
        }
        int idx = 0, sum = 0, answer = 0;
        while(deque.size() > 0) {
            answer++;
            int first = deque.removeFirst();
            sum -= first;
            if (idx < truck_weights.length) {
                if (sum + truck_weights[idx] <= weight) {
                sum += truck_weights[idx];
                deque.addLast(truck_weights[idx]);
                idx++;
                }
                else {
                    deque.addLast(0);
                }
            }
        }
        return answer;
    }
}

Solution


Pythonでのみ使用していたDequeを初めて使用し、問題を解決しました.whileドアで、1秒ごとに回転して、一番前の要素を取り除いて、それから一番後ろで、車が上がれば、車の重量を加えて、上がれないなら、0を加えて、このように解決しました.