문제 링크
https://www.acmicpc.net/problem/10845
문제 정보
입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
풀이
STL Queue를 이해하면 쉽게 해결할 수 있다!
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
queue<int> Q;
while (n--) {
string cmd;
cin >> cmd;
if (cmd == "push") {
int x;
cin >> x;
Q.push(x);
} else if (cmd == "pop") {
if (Q.empty()) {
cout << "-1" << '\n';
} else {
cout << Q.front() << '\n';
Q.pop();
}
} else if (cmd == "size") {
cout << Q.size() << '\n';
} else if (cmd == "empty") {
if (Q.empty()) {
cout << '1' << '\n';
} else {
cout << '0' << '\n';
}
} else if (cmd == "front") {
if (Q.empty()) {
cout << "-1" << '\n';
} else {
cout << Q.front() << '\n';
}
} else { // cmd == "back"
if (Q.empty()) {
cout << "-1" << '\n';
} else {
cout << Q.back() << '\n';
}
}
}
return 0;
}