득이공간

[백준 C++] 1966 프린터 큐 - 자료구조 본문

PS/알고리즘 문제풀이

[백준 C++] 1966 프린터 큐 - 자료구조

쟁득 2024. 2. 3. 13:57
 

1966번: 프린터 큐

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

www.acmicpc.net

cpp
#include <iostream> #include <queue> #include <algorithm> using namespace std; void TestCase() { int N, M; ‌cin >> N >> M; ‌deque<pair<int, int>> PrinterQueue; for (int i = 0; i < N; ++i) { ‌‌int Priority; ‌‌cin >> Priority; ‌‌PrinterQueue.emplace_back(Priority, i); } int Cnt = 1; while (!PrinterQueue.empty()) { ‌‌int Priority = PrinterQueue.front().first; ‌‌int Order = PrinterQueue.front().second; ‌‌if (Priority == (*max_element(PrinterQueue.begin(), PrinterQueue.end())).first) ‌‌{ ‌‌‌PrinterQueue.pop_front(); ‌‌‌if (Order == M) ‌‌‌{ ‌‌‌‌break; ‌‌‌} ‌‌‌++Cnt; ‌‌} ‌‌else ‌‌{ ‌‌‌PrinterQueue.pop_front(); ‌‌‌PrinterQueue.emplace_back(Priority, Order); ‌‌} } ‌cout << Cnt << '\n'; } int main() { ‌ios::sync_with_stdio(false); ‌cin.tie(NULL); ‌cout.tie(NULL); int TC; ‌cin >> TC; for (int i = 0; i < TC; ++i) { ‌‌TestCase(); } }

큐 자료구조 이용해서 푸는 문제입니다.

max_element 함수 사용을 위해 deque에 데이터를 담았습니다.

주의할 점은 중요도가 같은 문서들끼리의 인쇄 순서를 어떻게 체크할지 잘 생각해보아야 하는 것입니다.