이 문제를 보고 queue 를 2개 사용해서 풀려고 했는데 쉽지 않았다.
오름차순과 내림차순 2개의 queue 를 사용하려고 했으나
오름차순에서 마지막 수가 내림차순의 첫 번째 수를 넘게 되면
머리가 어지러워 진다.
자료조사를 하던중 set을 알게되어 set 을 사용하여 풀었다.
multi set 과 set 의 차이점은 key 값이 중복이 된다는 점이 였다.
set을 알면 쉽게 풀 수 있는 문제였다.
#include<iostream>
#include<string>
#include<set>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cout.tie(0);
cin.tie(0);
int cnt;
cin >> cnt;
while (cnt--) {
int a;
cin >> a;
multiset<int> set;
while (a--) {
string str;
int num;
cin >> str >> num;
if (str == "I") {
set.insert(num);
}
else {
if (set.empty())continue;
else if (num == 1) {
auto iter = set.end();
iter--;
set.erase(iter);
}
else {
set.erase(set.begin());
}
}
}
if (set.empty())cout << "EMPTY" << endl;
else {
auto iter = set.end();
iter--;
cout << *iter << " " << *set.begin() << endl;
}
}
}
'문제풀이 > 백준' 카테고리의 다른 글
[C++] 백준 11279번 문제풀이 (0) | 2021.02.22 |
---|---|
[C++] 백준 9095번 문제풀이 (0) | 2021.02.22 |
[C++] 백준 20546번 문제풀이 (0) | 2021.02.21 |
[C++] 백준 20544 문제풀이 (0) | 2021.02.21 |
[C++] 백준 7576번 문제풀이 (0) | 2021.02.19 |