자료구조 & 알고리즘/프로그래머스

Level 3. 이중우선순위큐

diesuki4 2023. 7. 13. 07:02
Level 3. 이중우선순위큐

 

 

출제자의 의도는 우선순위 큐 2개를 사용하라는 것 같은데 그냥 set으로 쉽게 풀었다.

  • 위와 같은 상황에서는 set을 사용하는 게 훨씬 간단하고 효율적이기 때문이다.

 

#include <iostream>
#include <vector>
#include <string>
#include <set>

using namespace std;

vector<int> solution(vector<string> operations)
{
    multiset<int> mset;
    
    for (string& op : operations)
    {
        int num = stoi(op.substr(2));

        switch (op[0])
        {
        case 'I':
            mset.emplace(num);
            break;
        case 'D':
            if (mset.empty())
                continue;
            else if (0 < num)
                mset.erase(*mset.rbegin());
            else
                mset.erase(mset.begin());
            break;
        default:
            break;
        }
    }

    return mset.empty() ? vector<int>{0, 0} : vector<int>{*mset.rbegin(), *mset.begin()};
}