#include <iostream>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
const int MX = 10005;
int que[MX];
int head = 0, tail = 0;
int n;
cin >> n;
string st;
for (int i = 0; i < n; i++) {
int x;
cin >> st;
switch (st[0]) { //가장 앞에 문자로 판단
case 'p':
if (st[1] == 'u') { //push 일때
cin >> x;
tail = (tail + 1) % MX;
que[tail] = x;
}
else { //pop 일때
if (head == tail) cout << -1 << "\n";
else {
head = (head + 1) % MX;
cout << que[head] << "\n";
}
}
break;
case 's':
cout << ((tail - head + MX) % MX) <<"\n";
break;
case 'e': //공백상태 확인
if (head == tail) cout << 1 << "\n";
else cout << 0 << "\n";
break;
case 'f':
if (head == tail) cout << -1 << "\n";
else cout << que[(head+1) % MX] << "\n";
break;
case 'b':
if (head == tail) cout << -1 << "\n";
else cout << que[tail] << "\n";
break;
}
}
}
자료구조 큐가 어떻게 돌아가는지 알 수 있도록 생각하게 해준 문제라고 생각합니당
