PS

BOJ 13335 : 트럭

lickelon 2025. 2. 7. 16:19
  • 문제 링크 : boj.kr/13335
  • 난이도 : S1
  • 태그 : 시뮬레이션, 큐

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n, w, l;
    cin >> n >> w >> l;
    vector<int> arr(n);
    for(auto &e : arr) cin >> e;

    queue<int> _q;
    for(int i = 0; i < w; i++) _q.push(0);
    int sum = 0;
    int cnt = 0;
    int idx = 0;
    int ans = 0;
    while(++ans) {
        int curr = _q.front(); _q.pop();
        if(curr) {
            cnt++;
            sum -= curr;
        }
        if(cnt == n) break;

        if(arr[idx] <= l-sum) {
            _q.push(arr[idx]);
            sum += arr[idx];
            idx++;
        }
        else {
            _q.push(0);
        }
    }
    cout << ans;

    return 0;
}

풀이

트럭이 올라가지 않는 위치엔 무게가 0인 트럭이 올라가 있다고 생각한다.

그러면 매 시간마다의 시뮬레이션을 큐에서 하나의 원소를 pop하는 것으로 대체할 수 있다.

728x90

'PS' 카테고리의 다른 글

BOJ 29719 : 브실이의 불침번 근무  (0) 2025.02.09
BOJ 12789 : 도키도키 간식드리미  (0) 2025.02.08
BOJ 3258 : 컴포트  (0) 2025.02.06
BOJ 28447 : 마라탕 재료 고르기  (2) 2025.02.05
BOJ 3896 : 소수 사이 수열  (0) 2025.02.04