1
2
3
4
5
6
7
8
9
10
11
| 1. Operation 순회
A. 만약 I 라면
i. String to int 로 바꿔 준 뒤에 deque에 push
ii. Sort
B. 만약 d라면
i. 1이라면
1. 최댓값을 삭제해줘야 하니 맨 뒤에 값 pop
ii. -1 이라면
1. 최솟값을 삭제해줘야 하니 맨 앞에 값 pop
2. 만약 deque가 비었다면 0,0 리턴
3. 아니라면 최대 최소 리턴
|
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
| #include <string>
#include <vector>
#include <deque>
#include<algorithm>
using namespace std;
vector<int> solution(vector<string> o) {
vector<int> answer;
deque<int> d;
for (int i = 0; i < o.size(); i++) {
if (o[i][0] == 'I') {
string sub = o[i].substr(2, o[i].length());
int temp = atoi(sub.c_str());
d.push_back(temp);
sort(d.begin(), d.end());
}
else {
if (d.empty()) {
continue;
}
if (o[i][2] == '1') {
d.pop_back();
}
else {
d.pop_front();
}
}
}
if (d.empty()) {
answer.push_back(0);
answer.push_back(0);
}
else {
answer.push_back(d.back());
answer.push_back(d.front());
}
return answer;
}
|