알고리즘
[BOJ] 10886: 덱
haesa_s
2022. 9. 29. 17:24
문제: 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 출력.