![article thumbnail image](https://blog.kakaocdn.net/dn/7rdeE/btrNlaPvpSH/tJCW5wcAud78ajVjUkve41/img.png)
문제: https://www.acmicpc.net/problem/10866
#include <bits/stdc++.h>
using namespace std;
deque<int> dq;
int n, k;
string cmd;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> cmd;
if (cmd == "push_front") {
cin >> k;
dq.push_front(k);
} else if (cmd == "push_back") {
cin >> k;
dq.push_back(k);
} else if (cmd == "pop_front") {
if (dq.empty())
cout << -1 << '\n';
else {
cout << dq.front() << '\n';
dq.pop_front();
}
} else if (cmd == "pop_back") {
if (dq.empty())
cout << -1 << '\n';
else {
cout << dq.back() << '\n';
dq.pop_back();
}
} else if (cmd == "size")
cout << dq.size() << '\n';
else if (cmd == "empty")
cout << dq.empty() << '\n';
else if (cmd == "front") {
if (dq.empty())
cout << -1 << '\n';
else
cout << dq.front() << '\n';
} else if (cmd == "back") {
if (dq.empty())
cout << -1 << '\n';
else
cout << dq.back() << '\n';
}
}
}
STL 덱을 사용해서 구현했다.
"push_front" = > k에 정수를 받고 dq.push_font()
"push_back" => k에 정수를 받고 dq.push_back()
"pop_front" => 덱이 비었는지 검증하고, empty가 아니라면 front 값을 출력 후 pop. empty면 -1 출력.
"pop_back" => 덱이 비었는지 검증하고, empty가 아니라면 back 값을 출력 후 pop. empty면 -1 출력.
"size" => 덱의 사이즈 출력, dq.size()
"empty" => 덱이 비었는지 확인 후 empty면 1, 아니면 0 출력
"front" => 덱이 비었는지 검증하고, empty가 아니라면 front 값을 출력. empty면 -1 출력.
"back" => 덱이 비었는지 검증하고, empty가 아니라면 back 값을 출력. empty면 -1 출력.
'알고리즘' 카테고리의 다른 글
[BOJ] 1021: 회전하는 큐 (0) | 2022.10.01 |
---|---|
[BOJ] 4949: 균형잡힌 세상 (0) | 2022.09.30 |
[BOJ] 2164: 카드2 (0) | 2022.09.29 |
[BOJ] 18258: 큐2 (0) | 2022.09.28 |
[BOJ] 10845: 큐 (0) | 2022.09.28 |