자료구조 & 알고리즘/프로그래머스
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()};
}