본문 바로가기

PS/BOJ

[C++] BOJ (백준) 1966 : 프린터 큐

문제

1966번: 프린터 큐 (acmicpc.net)

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

코드
#include <algorithm>
#include <iostream>
#include <queue>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    cin >> t;
    while (t--) {
        int n, m;
        cin >> n >> m;
        vector<int> v;
        queue<pair<int, int>> q;

        for (int i = 0; i < n; i++) {
            int priority;
            cin >> priority;
            v.emplace_back(priority);
            q.emplace(i, priority);
        }

        sort(v.begin(), v.end());

        int cnt = 0;
        while (true) {
            if (v.back() == q.front().second) {
                cnt++;
                if (m == q.front().first) break;
                v.pop_back();
            }
            else
                q.emplace(q.front());
            q.pop();
        }
        cout << cnt << '\n';
    }
    return 0;
}

 

설명

queue에 문서 번호와 중요도를 pair로 저장한다.
vector는 가장 높은 중요도를 구하기 위해 사용했다.