1) 2,1,3,2 에서 제일 큰 친구가 3이므로 맨 앞의 친구 2를 빼서 꼬리에다가
추가를 해야한다. -> queue stl을 사용하면 되겟다. 라고 생각함.
2) 우선 순위가 가장 큰 친구부터! 이므로 priority_que stl을 사용해야 겠다고 생각함.
3) 1, 2번을 진행 중에 location의 값과 비교를 해야한다. location은 인덱스를 뜻하므로 고정적인 값이다라는 것을 유추했고,
추가적으로 priority값을 계속 유지하면서 꼬리에 붙여야 하는 것을 통해
pair 를 사용해야 겠다고 생각할 수 있다.
=> 힌트들을 가지고 코드로 구현하자!
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
priority_queue<int> pq;
queue<pair<int, int>> q;
for(int i = 0; i < priorities.size(); i++)
{
q.push({priorities[i], i});
pq.push(priorities[i]);
}
while(!pq.empty())
{
if(pq.top() == q.front().first)
{
answer++;
if(location == q.front().second)
return answer;
q.pop();
pq.pop();
}
else
{
q.push(q.front());
q.pop();
}
}
return answer;
}