문제링크
https://programmers.co.kr/learn/courses/30/lessons/42583?language=java
시물레이션
큐
문제 설명에 트럭의 전진이 안나와있어서 이해하는데 좀 오래걸렸는데 질문목록을 보니 나만 그런게 아니였다.
다리를 큐로 선언하고, 트럭들을 큐에 넣고 빼주는 것을 구현하면 된다.
큐에 트럭을 넣을 수 있는 조건은
이렇게 3가지가 있다.
위 조건이 만족하지 않으면 다음 트럭이 다리는 지날 수 있도록 0을 넣어주면서 poll()
메서드를 이용해 트럭이 다리를 건너도록 해준다.
answer를 반환할 때는 트럭은 1초에 한 칸씩 전진하기 때문에 다리 길이를 더하고 반환한다.
import java.util.*;
class Solution {
static LinkedList<Integer> bridge = new LinkedList<>();
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0, totalWeight = 0;
for (int i = 0; i < bridge_length; i++) {
bridge.add(0);
}
for (int t : truck_weights) {
while ((totalWeight + t - bridge.peek()) > weight) {
totalWeight -= bridge.poll();
bridge.add(0);
answer += 1;
}
totalWeight -= bridge.poll();
totalWeight += t;
bridge.add(t);
answer += 1;
}
return answer + bridge_length;
}
}