공부/PS (백준)
[BOJ] 1966 프린터 큐 / C++
happyst
2022. 5. 18. 02:06
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
#include <stdio.h>
#include <queue>
using namespace std;
int T, N, M;
queue <pair<int, int> > q;
priority_queue <int> pq;
int sequence[110];
int cnt, answer;
void init()
{
for (int i = 0; i <= 100; i++)
{
sequence[i] = 0;
}
q = queue<pair<int, int> >(); // queue 초기화
pq = priority_queue<int>(); // queue 초기화
cnt = 1;
answer = 0;
}
int main(void)
{
scanf("%d", &T);
while (T--)
{
init();
scanf("%d %d", &N, &M);
for (int i = 0; i < N; i++)
{
int x;
scanf("%d", &x);
q.push({ i,x });
pq.push(x);
}
while (!q.empty())
{
int cur_index = q.front().first;
int cur_priority = q.front().second;
int top_priority = pq.top();
q.pop();
if (cur_priority >= top_priority)
{
// 현재 문서가 나머지 문서들보다 우선순위가 높음
pq.pop();
sequence[cur_index] = cnt++;
}
else
{
q.push({ cur_index, cur_priority });
}
}
printf("%d\n", sequence[M]);
}
return 0;
}
배운 것
- C++ STL 우선순위 큐 사용
- queue 컨테이너 초기화
#include <queue>
queue <int> q; // queue 선언
q = queue <int>(); // queue 초기화