덱 자료구조에 대해 이해하고 있다면 쉽게 해결할 수 있습니다. 덱 자료구조에 대한 설명은 이전에 작성한 글인 덱 2에 적혀있습니다.
문제를 해결하기 위해 Deque 클래스를 만들어 해결했습니다. 해당 클래스 또한 덱 2에 적혀있습니다.
int main()
{
std::cin.tie(NULL);
std::ios_base::sync_with_stdio(false);
int n;
std::cin >> n;
Deque deque(n);
for (int i = 0; i < n; i++)
{
std::string temp;
std::cin >> temp;
int x;
if (temp.compare("push_front") == 0)
{
std::cin >> x;
deque.Add_Front(x);
}
else if (temp.compare("push_back") == 0)
{
std::cin >> x;
deque.Add_Rear(x);
}
else if (temp.compare("pop_front") == 0)
{
std::cout << deque.Delete_Front() << "\n";
}
else if (temp.compare("pop_back") == 0)
{
std::cout << deque.Delete_Rear() << "\n";
}
else if (temp.compare("size") == 0)
{
std::cout << deque.Size() << "\n";
}
else if (temp.compare("empty") == 0)
{
int size = deque.Size();
if (size == 0)
std::cout << "1\n";
else
std::cout << "0\n";
}
else if (temp.compare("front") == 0)
{
std::cout << deque.Get_Front() << "\n";
}
else if (temp.compare("back") == 0)
{
std::cout << deque.Get_Rear() << "\n";
}
}
return 0;
}