반응형
문제
https://www.acmicpc.net/problem/13335
풀이
다리를 큐로 생각을 하고 트럭이 다리에 올라가는 것을 큐에 값을 넣는 것으로 생각을 한다.
큐에 넣을 수 있는 최대 수는 w가 되고, 큐 안에 값들은 L을 넘어서면 안된다.
1. 큐에 전체 무게가 L을 넘어가지 않을 때까지 값을 넣고, 다음 값을 넣을 때 L을 넘게 되면 0을 대신 큐에 집어 넣는다.
2. 그리고 큐에 w개의 값이 들어있으면 값을 1개를 빼주고 다음 값(0이나 트럭의 무게)을 결정해서 집어넣으면 된다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <iostream>
#include <queue>
using namespace std;
int n, w, L;
queue<int> q;
int result;
int truck[1000];
int cur_weight;
int main()
{
cin.tie(0);
ios::sync_with_stdio(0);
cin >> n >> w >> L;
for (int i=0; i<n; i++) cin >> truck[i];
for (int i=0; i<n; i++)
{
while (true)
{
if (q.size() == w)
{
cur_weight -= q.front();
q.pop();
}
if (truck[i] + cur_weight <= L) break;
q.push(0);
result++;
}
q.push(truck[i]);
cur_weight += truck[i];
result++;
}
cout << result + w;
return 0;
}
|
cs |
반응형
'BOJ' 카테고리의 다른 글
백준 14499 - 주사위 굴리기 (0) | 2020.04.15 |
---|---|
백준 1517 - 버블 소트 (0) | 2020.04.14 |
백준 2447 - 별찍기 - 10 (0) | 2020.04.06 |
백준 14503 - 로봇 청소기 (0) | 2020.04.03 |
백준 6549 - 히스토그램에서 가장 큰 직사각형 (0) | 2020.03.27 |