[백준(BOJ)] 트럭(13335번)_C++
2023. 9. 20. 15:31ㆍProblem Solving/Greedy & 구현
728x90
반응형
SMALL
그냥 시뮬레이션하면 되는 문제였다.
시간의 흐름에 따라 트럭들을 움직이면서 모든 트럭이 다리를 건너는 t를 구했다.
다만 문제에 한가지 함정이 있는데 바로 w가 다리의 길이고, L이 다리의 최대하중이라는 것이다.
나는 당연히 w가 다리의 최대하중이고, L이 다리의 길이인 것으로 인식하고 문제를 풀었다가 자꾸 무한루프를 돌아서 화가 날 뻔 했다.
모두 이 함정에 유의하도록 하자.
정답 코드
#include <iostream>
using namespace std;
int n, w, L;
pair<int, int> car[1000]; //{weight, position}
int t = 0;
bool out[1000];
int cur_w = 0;
int cur_car = 0;
int main(){
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
//input
cin >> n >> L >> w;
for (int i = 0; i < n; i++)
cin >> car[i].first;
//simulation
while (1){
t++;
//move truck on bridge
for (int i = 0; i < cur_car; i++)
car[i].second++;
//check to get out bridge
for (int i = 0; i < cur_car; i++){
if (out[i] == false && car[i].second > L){
cur_w -= car[i].first;
out[i] = true;
//cross all truck
if (i == n - 1){
cout << t;
return 0;
}
}
}
//car go bridge
if (cur_w < w){
if (cur_w + car[cur_car].first <= w){
car[cur_car].second++;
cur_w += car[cur_car].first;
cur_car++;
}
}
}
}728x90
반응형
LIST
'Problem Solving > Greedy & 구현' 카테고리의 다른 글
| [백준(BOJ)] 줄세우기(10431번)_C++ (0) | 2024.03.15 |
|---|---|
| [백준(BOJ)] Byte Coin(17521번)_C++ (1) | 2023.09.26 |
| [백준(BOJ)] 명령 프롬프트(1032번)_C++ (0) | 2023.04.16 |
| [백준(BOJ)] 박스(9455번)_C++ (0) | 2023.04.15 |
| [백준(BOJ)] Z(1074번)_C++ (0) | 2023.04.05 |