삭제 추가가 용이한 이중 연결 리스트를 사용했다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <list>
using namespace std;
vector<int> solution(vector<string> operations)
{
vector<int> answer;
list<int> bl, sl;
for (const auto& item : operations)
{
string str = item;
str.erase(remove(str.begin(), str.end(), ' '), str.end());
if (str[0] == 'I')
{
string tmpStr = "";
for (int i = 1; i < str.size(); i++)
tmpStr += str[i];
bl.push_back(stoi(tmpStr)); bl.sort(greater<int>());
sl.push_back(stoi(tmpStr)); sl.sort(less<int>());
}
else
{
// 최솟값 삭제
if (str == "D-1")
{
if(bl.empty())
continue;
bl.pop_back();
sl.clear();
sl = bl;
sl.sort(less<int>());
}
// 최대값 삭제
else
{
if (sl.empty())
continue;
sl.pop_back();
bl.clear();
bl = sl;
bl.sort(greater<int>());
}
}
}
answer.push_back(sl.back());
answer.push_back(bl.back());
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[3] 단속 카메라 (0) | 2022.10.05 |
---|---|
[3] 베스트 앨범 (0) | 2022.10.05 |
[3] 숫자 게임 (0) | 2022.10.02 |
[3] 가장 먼 노드 (0) | 2022.10.02 |
[3] 섬 연결하기 (0) | 2022.10.01 |