answer++
locatin
과 현재 프린트할 인덱스가 같다면 return 값 찾은 것이기 때문에 return모든 인쇄물에 대한 우선순위를 저장하는 큐와 인쇄 대기 큐를 따로 관리하는 것이 관건이었음
같은 우선순위라면 처음 인쇄 순서대로 순차 출력하는 것이 아니라 우선순위가 높은 인쇄물이 나오기 전까지는 계속 뒷 순서로 빼줘야하기 때문에 순서가 계속해서 갱신되는 방식이므로 인쇄물을 우선순위 큐로만 관리하면 우선순위에 따라서만 인쇄 순서가 결정되기 때문에 부적합
#include <string>
#include <vector>
#include <queue>
using namespace std;
struct process {
int prio;
int idx;
};
int solution(vector<int> priorities, int location) {
int answer = 0;
queue<process> q;
priority_queue<int> pq;
for(int i=0;i<priorities.size();i++) {
q.push({priorities[i],i});
pq.push(priorities[i]);
}
while(!q.empty()) {
if(q.front().prio==pq.top()) {
answer++;
if(q.front().idx==location) break;
q.pop();
pq.pop();
}
else {
q.push(q.front());
q.pop();
}
}
return answer;
}