🗒 1966번 문제

📌 문서의 순서를 Queue로 나타내자 ❗️
1️⃣ 여러 개의 문서가 FIFO-First In First Out에 따라 인쇄가 되기에 Queue를 사용하자
2️⃣ queue와 priority_queue를 함께 사용해서 중요도에 따라 인쇄 순서가 바뀔 수 있도록 하기
3️⃣ priority_queue는 들어간 순서와 상관없이 높은 숫자 순서로 숫자를 저장해 둠
4️⃣ 이 점을 이용해서 중요도에 맞춰서 문서를 pop시키고 궁금한 문서가 몇 번째로 인쇄되는지 출력받기
➰ 코드로 나타낸 17608번 ➰
#include <iostream>
#include <queue>
using namespace std;
int main() {
int testCase = 0;
int count = 0;
int documentNum, docuPosition, important;
cin >> testCase;
for (int i = 0; i < testCase; i++) {
count = 0;
cin >> documentNum >> docuPosition;
queue<pair<int, int>> queue;
priority_queue<int> priorityQueue;
for (int j = 0; j < documentNum; j++){
cin >> important;
queue.push({j, important});
priorityQueue.push(important);
}
while (!queue.empty()) {
int k = queue.front().first;
int v = queue.front().second;
queue.pop();
if(priorityQueue.top() == v) {
priorityQueue.pop();
count++;
if(k == docuPosition) {
cout << count << endl;
break;
}
} else {
queue.push({ k, v});
}
}
}
}