이 문제를 풀다가 이 방법밖에 없는것 같은데 시간초과나서 결국 찾아봤다. 우선순위큐 반가워 ㅠㅠ
#include <string>
#include <vector>
#include <queue>
using namespace std;
bool compare(int i, int j){
return j<i;
}
int solution(vector<int> p, int location) {
int answer = 0;
int size = p.size();
priority_queue<int> pq;
queue<pair<int, int>> q;
for(int i=0;i<size;i++){
pq.push(p[i]);
q.push(make_pair(i, p[i]));
}
while(!q.empty()){ // 모두 pop될 때 까지
int i = q.front().first; // 인덱스
int v = q.front().second; // 벨류
if(v == pq.top()){ // 제일 큰 값이면
answer ++;
if(i == location)
break;
q.pop();
pq.pop();
}else{ // 아니면
q.push(q.front());
q.pop();
}
}
return answer;
}
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int max = *max_element(priorities.begin(), priorities.end());
while (true)
{
for (int i = 0; i < priorities.size(); ++i)
{
if (priorities[i] == max)
{
++answer;
if (i == location)
return answer;
priorities[i] = 0;
max = *max_element(priorities.begin(), priorities.end());
}
}
}
}