1.아이디어
자료구조 덱을 공부한뒤 문제를 풀어서 쉽게 풀수있었다. 덱 stl을 이용하여 쉽게 풀었다.
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int main()
{
deque <int> d;
int n;
cin>>n;
cin.ignore();
for(int i=0; i<n; i++)
{
string str;
cin>>str;
if(str=="push_front")
{
int x;
cin>>x;
d.push_front(x);
}
else if(str=="push_back")
{
int y;
cin>>y;
d.push_back(y);
}
else if(str=="pop_front")
{
if(d.size()==0)
{
cout<<-1<<'\n';
}
else
{
cout<<d.front()<<'\n';
d.pop_front();
}
}
else if(str=="pop_back")
{
if(d.size()==0)
{
cout<<-1<<'\n';
}
else
{
cout<<d.back()<<'\n';
d.pop_back();
}
}
else if(str=="size")
{
cout<<d.size()<<'\n';
}
else if(str=="empty")
{
if(d.size()==0)
{
cout<<1<<'\n';
}
else
{
cout<<0<<'\n';
}
}
else if(str=="front")
{
if(d.size()==0)
{
cout<<-1<<'\n';
}
else
{
cout<<d.front()<<'\n';
}
}
else if(str=="back")
{
if(d.size()==0)
{
cout<<-1<<'\n';
}
else
{
cout<<d.back()<<'\n';
}
}
}
return 0;
}
3.깨달은점
덱은 큐와 스택과 달리 front(처음)과 rear(끝)에서 삽입삭제 연산이 모두가능한 큐이다. 터널과도 같은 느낌이다. push의경우 push_front(),push_back()가 쓰이고 pop의경우 pop_front(),pop_back() 가 쓰인다.