원형 큐에 대해 이해하고 있으면 쉽게 풀 수 있는 문제입니다.
이 링크에 원형 큐에 대한 설명이 잘 작성되어있습니다.
#include <iostream>
int main()
{
int n;
std::cin >> n;
int* queue = new int[n];
for (int i = 0; i < n; i++)
queue[i] = -1;
int front = 0;
int rear = -1;
for (int i = 0; i < n; i++)
{
queue[(rear + 1) % n] = i;
rear++;
}
int t = 0;
while (rear - front != 0)
{
if (t % 2 == 0)
{
queue[(front) % n] = -1;
front++;
}
else
{
int temp = queue[(front) % n];
queue[(rear + 1) % n] = temp;
queue[(front) % n] = -1;
front++;
rear++;
}
t++;
}
std::cout << queue[(rear) % n] + 1;
}