-
백준 - 이중 우선순위 큐 (7662) [C++]문제 풀이/백준 2024. 3. 2. 23:41반응형
이 문제는 multiset을 이용해서 풀었다.
문제 제목대로 진짜 우선순위 큐 두 개 만들어서 하면 시간 초과가 난다.
문제에서 중복된 숫자가 들어올 수 있기 때문에 set이 아닌 multiset을 사용했다.
set, multiset은 기본적으로 오름차순 정렬이 되어있기 때문에 문제의 요구사항을 쉽게 해결할 수 있다.
#include <iostream> #include <set> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; cin >> T; for (int test = 0; test < T; test++) { int k; cin >> k; multiset<int> numbers; for (int command = 0; command < k; command++) { char c; int n; cin >> c >> n; if (c == 'D') { // delete if (numbers.empty()) { continue; } if (n == 1) { // max delete numbers.erase(--numbers.end()); } else { // min delete numbers.erase(numbers.begin()); } } else { // insert numbers.insert(n); } } if (numbers.empty()) { cout << "EMPTY" << '\n'; } else { auto start = numbers.begin(); auto end = --numbers.end(); cout << *end << " " << *start << '\n'; } } return 0; }
반응형'문제 풀이 > 백준' 카테고리의 다른 글
백준 - 벽 부수고 이동하기 (2206) [C++] (0) 2024.03.04 백준 - N-Queen (9663) [C++] (0) 2024.03.04 백준 - 이진 검색 트리 (5639) [C++] (0) 2024.01.26 백준 - 트리의 지름 (1167) [C++] (0) 2024.01.22 백준 - 거짓말 (1043) [C++] (0) 2024.01.22