큐 자료구조에 대해 이해하고 있다면 쉽게 해결할 수 있는 문제입니다.
저는 별도로 queue 객체를 만들지 않고 빠른 문제 해결을 위해 단순히 main 함수에 동적 배열과 queue의 양끝을 가리키는 front와 rear 변수를 만들고 메모리 효율을 위해 원형 큐 처럼 접근했습니다.
#include <iostream>
int main()
{
int n;
std::cin >> n;
int* queue = new int[n];
int front = n;
int rear = n;
std::string in;
for (int i = 0; i < n; i++)
{
std::cin >> in;
if (in.compare("push") == 0)
{
int temp;
std::cin >> temp;
queue[front % n] = temp;
front++;
}
else if (in.compare("pop") == 0)
{
if (front == rear)
std::cout << "-1\n";
else
{
std::cout << queue[(rear++) % n] << "\n";
}
}
else if (in.compare("size") == 0)
{
std::cout << front - rear << "\n";
}
else if (in.compare("empty") == 0)
{
if (front == rear)
std::cout << "1\n";
else
std::cout << "0\n";
}
else if (in.compare("front") == 0)
{
if (front == rear)
std::cout << "-1\n";
else
std::cout << queue[rear % n] << "\n";
}
else if (in.compare("back") == 0)
{
if (front == rear)
std::cout << "-1\n";
else
std::cout << queue[(front - 1) % n] << "\n";
}
}
return 0;
}