BOJ - 13335번 트럭 (C++)

woga·2020년 11월 26일
0

BOJ

목록 보기
71/83
post-thumbnail

문제 출처: https://www.acmicpc.net/problem/13335

문제 난이도

Silver 1


문제 접근법

시도 1. 큐없이 그냥 idx를 두고 무게 +-를 쟀더니 다리를 건너는 시간 체크도 어렵고 답이 안나옴.
시도 2. 큐를 가지고 접근. 사이즈가 차면 = 다리 건너는 시간인 걸 이용해 덧셈과 뺼셈이 유용하다.


통과 코드

#include <iostream>
#include <algorithm>
#include <queue>

#define INF 987654321

using namespace std;

int arr[1001];

int main() {
	int n, w, l;
	cin >> n >> w >> l;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}
	queue<int> q;
	int time = 0, total = 0;
	for (int i = 0; i < n; i++) {
		while (1) {
			if (q.size() == w) {
				total -= q.front();
				q.pop();
			}
			if (total + arr[i] <= l) break;
			q.push(0);
			time++;
		}
		q.push(arr[i]);
		total += arr[i];
		time++;
	}
	cout << time + w << "\n";
	return 0;
}
profile
와니와니와니와니 당근당근

0개의 댓글