https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
deque 라이브러리를 사용해서 문제를 해결했다. q가 비어있지 않은 상태에만 조건문을 처리하도록 해줬다.
코드
// 10866
#include <iostream>
#include <deque>
#include <string>
using namespace std;
int main(int argc, const char *argv[])
{
int test, num;
string input;
deque<int> q;
cin >> test;
cin.ignore();
while(test--){
cin >> input;
if(input == "push_back"){
cin >> num;
q.push_back(num);
}
else if(input == "push_front"){
cin >> num;
q.push_front(num);
}
else if(input == "front"){
if(!q.empty()){
cout << q.front() << "\n";
}
else cout << "-1\n";
}
else if(input == "back"){
if(!q.empty()){
cout << q.back() << "\n";
}
else cout << "-1\n";
}
else if(input == "size"){
cout << q.size() << "\n";
}
else if(input == "empty"){
cout << q.empty() << "\n";
}
else if(input == "pop_front"){
if (!q.empty()){
cout << q.front() << "\n";
q.pop_front();
}
else cout << "-1\n";
}
else if(input == "pop_back"){
if (!q.empty()){
cout << q.back() << "\n";
q.pop_back();
}
else cout << "-1\n";
}
}
return 0;
}