pair queue,priority_queue 사용
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
queue<pair<int,int>> nList;
priority_queue<int> que;
for(int i = 0; i < priorities.size(); i++){
nList.push(make_pair(i,priorities[i]));
que.push(priorities[i]);
}
while(!nList.empty()){
if(nList.front().second == que.top()){
if(nList.front().first == location)
return ++answer;
else{
++answer;
nList.pop();
que.pop();
}
}else{
nList.push(nList.front());
nList.pop();
}
}
return answer;
}
queue는 탐색 기능이 없음
/*
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
queue<int> newList;
for(int i = 0; i < priorities.size(); i++){
newList.push(priorities[i]);
}
int listsize = newList.size();
while(1){
if(newList.empty()) break;
//가장 앞에 있는 친구 꺼내기
int curr = newList.front();
newList.pop();
//이 친구보다 큰 값이 있는지 찾기
bool flag = false;//F = 없을 때, T = 있을 때
if(curr)
if(flag){//T = 있을 때
//만약에 있으면 제일 뒤로 보내고 loc 값 변경
//loc가 0이면 제일 마지막으로 변경
//loc가 0이 아니면 1 감소
newList.push(curr);
if(location == 0) location = newList.size()-1;
else location--;
}else{//F = 없을 때
//없으면 출력하고 answer+1하기
//loc가 0이면 answer return
//loc가 0이 아니면 1 감소
answer++;
if(location == 0) return answer;
else location--;
}
}
return answer;
}
*/