오늘의 알고리즘
[C++]스택/큐 프린터(프로그래머스 2레벨)
하늘하늘 .
2022. 2. 25. 15:27
#include <string>
#include <vector>
#include <list>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location)
{
list<pair<int, int>> listInt = {};
vector<pair<int, int>> vecAnswer = {};
// 전부 입력
for (int i = 0; i < priorities.size(); ++i)
{
listInt.push_back({ priorities[i],i });
}
// list의 내용물이 없을 때까지
while (!listInt.empty())
{
for (int i = 0; i < listInt.size(); ++i)
{
// 들어온 것 중에 가장 큰 것
int iMax = *max_element(priorities.begin(), priorities.end());
// 맨 앞에 것 빼오기
pair<int, int> pFirst = listInt.front();
listInt.pop_front();
// 맞으면 다시 입력
if (pFirst.first == iMax)
{
vecAnswer.push_back({ pFirst.first, pFirst.second });
priorities[pFirst.second] = -1;
}
// 아니라면 다시 넣어주기
else
listInt.push_back(pFirst);
}
}
for (int i = 0; i < vecAnswer.size(); ++i)
{
if (vecAnswer[i].second == location)
return i + 1;
}
return -1;
}
리스트가 더 어울릴 것 같아서 리스트로 했다.
큐랑 다를 바 없었지만 뭔가 리스트가 더 끌려서?
근데 뭐 큐로 했어도 별 차이 없을 것 같긴하다.