※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 13335번 문제인 트럭이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/13335
13335번: 트럭
입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트
www.acmicpc.net
다리에 트럭이 순서대로 들어가고 나오므로, 다리에 진입할 트럭과 다리를 큐로 관리하면 문제의 상황을 간단히 시뮬레이션할 수 있다.
문제의 제한이 작아 시간 내로 모든 시뮬레이션을 마칠 수 있다는 것을 관찰하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
struct truck {
int time_entered, weight;
truck(int t, int w) {
this->time_entered = t, this->weight = w;
}
};
queue<truck> bridge;
queue<int> waiting;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, L, W; cin >> N >> L >> W;
while (N--) {
int x; cin >> x;
waiting.push(x);
}
int total = 0;
int T = 0;
while (!bridge.empty() || !waiting.empty()) {
if (!bridge.empty()) {
if (bridge.front().time_entered + L == T) {
total -= bridge.front().weight;
bridge.pop();
}
}
if (!waiting.empty()) {
if (total + waiting.front() <= W) {
bridge.push(truck(T, waiting.front()));
total += waiting.front();
waiting.pop();
}
}
T++;
}
cout << T;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1449 // C++] 수리공 항승 (0) | 2022.02.27 |
---|---|
[BOJ 11381 // C++] Sequences (0) | 2022.02.26 |
[BOJ 24267 // C++] 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2022.02.24 |
[BOJ 24266 // C++] 알고리즘 수업 - 알고리즘의 수행 시간 5 (0) | 2022.02.24 |
[BOJ 24264 // C++] 알고리즘 수업 - 알고리즘의 수행 시간 3 (0) | 2022.02.24 |