Stack/Coding test
[C++ / Lv 2] 다리를 지나는 트럭
Seo_re:
2022. 2. 26. 13:08
반응형
풀이 코드
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(int bridge_length, int weight, vector<int> truck_weights) {
//first : 트럭 무게
//second : 다리 진입 시간
queue<pair<int, int>> bridgeQueue;
int sec = 1;
int totWeight = 0;
for(int i = 0; i < truck_weights.size(); i++, sec++)
{
if(bridgeQueue.size() != 0)
{
//경과시간이 선두 트럭 통과 시간보다 크면 이미 통과한 트럭이므로 디큐
if(sec >= bridgeQueue.front().second + bridge_length)
{
totWeight -= bridgeQueue.front().first;
bridgeQueue.pop();
}
//트럭 무게가 다리 하중을 넘으면 선두 트럭을 디큐하고 선두 트럭 기준으로 시간을 다시 계산한다.
while(weight < truck_weights[i] + totWeight)
{
sec = bridgeQueue.front().second + bridge_length;
totWeight -= bridgeQueue.front().first;
bridgeQueue.pop();
}
}
bridgeQueue.push(make_pair(truck_weights[i], sec));
totWeight += truck_weights[i];
}
return bridgeQueue.back().second + bridge_length;
}
기타
- 이번 문제는 지문이 너무 불친절해서 지문 이해하는데 오래걸렸다. (지문이 이해가 안간다는 말들이 보이는거 보면 내가 한글을 못하는건 아닌거같다..)
반응형