득이공간
[백준 C++] 1966 프린터 큐 - 자료구조 본문
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
#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에 데이터를 담았습니다.
주의할 점은 중요도가 같은 문서들끼리의 인쇄 순서를 어떻게 체크할지 잘 생각해보아야 하는 것입니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준 C++] 1003 피보나치 함수 - 다이나믹프로그래밍 (0) | 2024.02.04 |
---|---|
[백준 C++] 11659 구간 합 구하기 4 - 자료구조 (0) | 2024.02.03 |
[백준 C++] 1253 좋다 - 자료구조 (1) | 2024.02.03 |
[백준 C++] 1922 네트워크 연결 - 최소신장트리 (0) | 2024.02.03 |
[백준 C++] 1197 최소 스패닝 트리 - 최소신장트리 (0) | 2024.02.03 |