덱이란 큐를 기본으로 두고 앞과 뒤에서 삽입, 삭제가 가능한 자료구조이다. c++이라면 deque를 포함해서 사용할 수 있다.
문자열을 받아서 비교하면서 필요한 명령문을 실행하도록 했다. 속도를 빨리하기 위해 cin.tie(0);
cin.sync_with_stdio(0);
를 추가하고 endl을 \n로 사용했다.
#include<iostream>
#include<deque>
using namespace std;
int main() {
cin.tie(0);
cin.sync_with_stdio(0);
int n;
cin >> n;
deque<int> deq;
for (int i = 0; i < n; i++) {
string s;
cin >> s;
if (s == "push_front") {
int input;
cin >> input;
deq.push_front(input);
}
else if (s == "push_back") {
int input;
cin >> input;
deq.push_back(input);
}
else if (s == "pop_front") {
if (deq.empty()) {
cout << "-1\n";
}
else {
cout << deq.front() << "\n";
deq.pop_front();
}
}
else if (s == "pop_back") {
if (deq.empty()) {
cout << "-1\n";
}
else {
cout << deq.back() << "\n";
deq.pop_back();
}
}
else if (s == "size") {
cout << deq.size() << "\n";
}
else if (s == "empty") {
if (deq.empty()) {
cout << "1\n";
}
else {
cout << "0\n";
}
}
else if (s == "front") {
if (deq.empty()) {
cout << "-1\n";
}
else {
cout << deq.front() << "\n";
}
}
else if (s == "back") {
if (deq.empty()) {
cout << "-1\n";
}
else {
cout << deq.back() << "\n";
}
}
}
}