#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int solution(vector<int> p, int l)
{
vector<pair<int, bool>> v;
for (int i = 0; i < p.size(); i++)
i != l ? v.push_back(make_pair(p[i], false)) : v.push_back(make_pair(p[i], true));
int count = 0;
while (!v.empty())
{
pair<int, bool> t = v[0];
v.erase(v.begin());
int sign = 1;
for (int i = 0; i < v.size(); i++)
{
if (t.first < v[i].first)
{
v.push_back(t);
sign = 0;
break;
}
}
if (sign)
{
count++;
if (t.second)
break;
}
}
return count;
}
location의 프로세스가 몇번째로 실행되는지 찾는 문제였는데, 인덱스가 유동적으로 움직이기 때문에 내가 찾는 원소의 인덱스가 뭔지 기억하고 있는다고 될 문제가 아니였다. 그래서 내가 찾는 원소가 맞는지 확인할 수 있도록 Vector에 pair형태로 넣어줬다.
그 후 while문을 돌며 v라는 벡터를 마치 Queue처럼 움직이게 만들었다. 임시변수 t에 Queue의 맨 앞 원소를 pop해주고, 반복문을 한번 돌며 t보다 큰 값이 있는지 체크하고, 만약 있다면 체크 변수를 false로 만들고 다시 Queue에 push후 반복문 종료.
그 후 체크 변수가 true (큰 값이 없다면) 프로세스 실행, 그리고 방금 꺼낸 프로세스가 우리가 찾는 프로세스라면 while문을 종료시키고 지금 현재 반복된 실행 순서를 나타내는 변수인 count를 return한다.
// 문제를 풀고 번뜩 생각난 함수인 *max_element를 사용했었어야 했다.. 코드 9줄을 낭비해버렸다. 분발하자
잘 보고 갑니덩