https://school.programmers.co.kr/learn/courses/30/lessons/42583
구현 아이디어 7분 구현 6분
#include <string>
#include <vector>
#include <queue>
// bridge_length == queue의 사이즈.
// push와 pop이 같이 일어날 수 있음. (다리에 완전히 오르지 않은 트럭의 무게 무시)
using namespace std;
int solution(int bridge_length, int weight, vector<int> truck_weights) {
int answer = 0;
queue<int> bridge;
for(int i = 0; i < bridge_length; ++i) bridge.push(0);
int sum = 0;
int time = 0;
for(int i = 0; i < truck_weights.size();)
{
// 하나 빠지고.
sum -= bridge.front();
bridge.pop();
int cur_truck_weight = truck_weights[i];
if(sum + cur_truck_weight <= weight && bridge.size() <= bridge_length)
{
bridge.push(cur_truck_weight);
sum += cur_truck_weight;
++i;
}
else bridge.push(0);
++time;
}
time += bridge.size();
return answer = time;
}