#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <utility> // pair
using namespace std;
queue<pair<int, int> > q; // 중요도, 순서
priority_queue<int> order; // 순서
int solution(vector<int> priorities, int location) {
int answer = 0;
for(int i = 0; i < priorities.size(); i++){
q.push({priorities[i], i}); // 큐는 push_back X
order.push(priorities[i]); // 중요도 순서 저장
}
while(!q.empty()){
int prio = q.front().first; // 큐 제일 앞
int loc = q.front().second;
int orderPrio = order.top(); // priority queue는 top
q.pop();
if(orderPrio == prio){
answer++; // 출력
order.pop();
if(loc == location){
break; // if문 안에 if문을 뒀어야...
}
} else {
q.push({prio, loc});
}
}
return answer;
}
은근 쉬웠는데 너무 어렵게 생각해서 좀 헤맸다.
if 문 안에 if 문을 작성해서 해당 프린트보다 우선순위인 프린트가 없을 때 location이 같으면 출력해주면 되었는데 혼자 무슨 && 쓰고 쌩쇼했었다... 왜 굳이 그랬었지 이해가 안간다.
아무튼 해결!