1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <string>
#include <vector>
#include <queue>
using namespace std;
 
 
vector<int> solution(vector<string> operations) {
    vector<int> answer;
    priority_queue<int> pq1; // max-heap
    priority_queue<int, vector<int>, greater<int>> pq2; // min-heap
    int cnt = 0;
 
    for(int i=0;i<operations.size();i++){
        //삽입
        if(operations[i][0]=='I'){
            string number=operations[i].substr(2);
            int num=stoi(number);
            pq1.push(num);
            pq2.push(num);
            cnt++;
        }
        else if(operations[i][0]=='D' && cnt>0){
            //최댓값 삭제
            if(operations[i][2]=='1'){
                pq1.pop();
            }
            //최솟값 삭제
            else{   
                pq2.pop();
            }
            cnt--;
            if (cnt == 0){
                while(!pq1.empty()){
                    pq1.pop();
                }
                while(!pq2.empty()){
                    pq2.pop();
                }
            }
        }   
    }
    if(cnt == 0){
        answer.push_back(0);
        answer.push_back(0);
    }
    else{
        answer.push_back(pq1.top());
        answer.push_back(pq2.top());
    }
 
    return answer;
}
cs

출처: https://school.programmers.co.kr/learn/courses/30/lessons/42628

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[c++] 숫자게임  (1) 2022.09.20
[c++] 등굣길  (0) 2022.09.19
[c++] 정수 삼각형  (2) 2022.09.19
[c++] 최고의 집합  (0) 2022.09.18
[JAVA] n-queen  (0) 2022.09.16

+ Recent posts