stack
1. bridge
라는 이름의 queue를 다리의 길이 만큼 0으로 채워준다. (무게가 0인 트럭들이 있다고 생각한다.)
2. truck_weights
를 순회하면서 아래와 같은 일을 진행한다.
+) 다른 분의 풀이를 봤을 때, truck과 관련된 클래스를 생성하여 트럭의 이동 거리를 저장하여 이동 시켰다. 나의 풀이보다 훨씬 직관적으로, 객체 지향적으로도 이해하기 쉬운 코드였다. 다음 번 풀이 에는 클래스를 활용하여 물체의 속성을 더욱 쉽게 관리해봐야겠다고 생각하였다.
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> bridge = new ArrayDeque();
int truckSum = 0;
for (int i = 0; i < bridge_length; i++) {
bridge.add(0);
}
for (int i = 0; i < truck_weights.length; i++) {
int cur = truck_weights[i];
while (truckSum - bridge.peek() + cur > weight) {
truckSum -= bridge.poll();
bridge.add(0);
answer++;
}
truckSum += cur - bridge.poll();
bridge.add(cur);
answer++;
}
return answer + bridge_length;
}
}