프로그래머스 42628 - 이중우선순위큐
문제 링크
생각 및 접근
- 이중우선순위큐라고 해서 우선순위 큐를 활용해야 될 것 같았지만, 문제를 분석하다 보니 그냥 vector로 풀어도 상관없겠다는 판단이 났다.
- operations 돌리기
I 숫자
라면 vector에 삽입
D 1
이라면 내림차순으로 나열해서 pop_back()
D -1
이라면 오름차순으로 나열해서 pop_back()
코드
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<string> operations) {
vector<int> q;
for(auto o : operations){
if(o[0] == 'I'){
string temp = o.substr(2);
q.push_back(stoi(temp));
}
else if(!q.empty() && o == "D 1"){
if(q.size() != 1) sort(q.begin(), q.end());
q.pop_back();
}
else if(!q.empty() && o == "D -1"){
if(q.size() != 1) sort(q.rbegin(), q.rend());
q.pop_back();
}
}
sort(q.begin(), q.end());
vector<int> answer;
if(q.empty()){
answer.push_back(0);
answer.push_back(0);
}
else{
answer.push_back(q[q.size() - 1]);
answer.push_back(q[0]);
}
return answer;
}
채점 결과