오늘의 알고리즘

[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;
}
 

리스트가 더 어울릴 것 같아서 리스트로 했다.

큐랑 다를 바 없었지만 뭔가 리스트가 더 끌려서?

근데 뭐 큐로 했어도 별 차이 없을 것 같긴하다.