프린터 큐 - 실버3(1966) 작성일 2022-04-28 | In BOJ 문제 링크 문제 해결 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include<iostream> #include<algorithm> #include<queue> using namespace std; int testNum, N, M; int countVal; void solution() { int ipt; queue <pair<int, int>> q; priority_queue<int> pq; for (int i = 0; i < N; i++) { cin >> ipt; pq.push(ipt); q.push({i, ipt}); } while (!q.empty()) { int index = q.front().first; int iptValue = q.front().second; q.pop(); if (pq.top() == iptValue) { pq.pop(); countVal++; if (index == M) { cout << countVal << "\n"; break; } } else { q.push({index, iptValue}); } } } void input() { cin >> testNum; for (int i = 0; i < testNum; i++) { cin >> N >> M; countVal = 0; solution(); } } void solve() { input(); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); solve(); return 0; } 우선순위 큐에 우선순위를 넣으면 자동으로 내림차순 정렬(큰 -> 작)이 된다. 현재 queue에 우선순위가 우선순위 큐에 제일 앞의 값(우선순위 큰 값)과 같다면(== 현재 queue가 가장 우선순위가 크다) 우선순위 큐값 하나를 제거해주고 만약 현재 인덱스가 찾고자하는 문서인지 체크 후 몇번째 인쇄가 되었는지 출력을 한다.