💻 C++ 기반
코딩테스트 연습 - 다리를 지나는 트럭
https://programmers.co.kr/learn/courses/30/lessons/42583
✔️ 다리를 건너는 트럭을 위한 큐(crossing_queue) & 대기 트럭을 위한 큐(waiting_queue) 사용
✔️ 최대 적재량 제한때문에 다른 트럭이 다리 위로 못 올라갈 경우, crossing_queue에 0을 push해서 트럭이 움직이는 것을 표현
✔️ 대기 트럭이 하나도 없으면 crossing_queue에 -1을 push해서 종결 조건 만들어주기
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(int bridge_length, int weight, vector<int> truck_weights) {
int answer = 0;
queue<int> waiting_queue;
for (int i = 0; i < truck_weights.size(); i++)
{
waiting_queue.push(truck_weights[i]);
}
queue<int> crossing_queue;
int cur_weight = 0;
while (1)
{
if (!crossing_queue.empty() && crossing_queue.front() == -1 && waiting_queue.empty())
{
break;
}
while (crossing_queue.size() < bridge_length)
{
answer++;
if (waiting_queue.empty())
{
crossing_queue.push(-1);
}
else
{
if (cur_weight + waiting_queue.front() <= weight)
{
cur_weight += waiting_queue.front();
crossing_queue.push(waiting_queue.front());
waiting_queue.pop();
}
else
{
crossing_queue.push(0);
}
}
}
cur_weight -= crossing_queue.front();
crossing_queue.pop();
}
answer++;
return answer;
}