문제: https://www.acmicpc.net/problem/10845
#include <bits/stdc++.h>
using namespace std;
queue<int> q;
string cmd;
int n, k;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> cmd;
if (cmd == "push") {
cin >> k;
q.push(k);
} 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")
cout << q.empty() << '\n';
else if (cmd == "front") {
if (q.empty())
cout << -1 << '\n';
else
cout << q.front() << '\n';
} else if (cmd == "back") {
if (q.empty())
cout << -1 << '\n';
else
cout << q.back() << '\n';
}
}
}
일반적인 큐의 연산을 수행하는 문제이기 때문에 쉽게 해결할 수 있다.
cmd에 명령어를 입력받고 아래 경우에 따라 처리해주면 된다.
"push" => 큐에 push할 데이터를 받은 후 q.push(k)
"pop" => 연산을 수행하기 전에 큐가 empty인지 확인한 후에 q.pop()
"size" => 큐의 크기를 출력하면 되므로 q.size()
"empty" => 큐가 비었는지를 확인하면 되므로 q.empty()
"front" => 연산 수행 전에 큐가 비었는지 먼저 확인해야 한다. empty가 아니라면 큐의 앞부분을 출력하면 되므로 q.front()
"back" => 연산 수행 전에 큐가 비었는지 먼저 확인해야 한다. empty가 아니라면 큐의 뒷부분을 출력하면 되므로 q.back()
'알고리즘' 카테고리의 다른 글
[BOJ] 2164: 카드2 (0) | 2022.09.29 |
---|---|
[BOJ] 18258: 큐2 (0) | 2022.09.28 |
[BOJ] 1874: 스택 수열 (1) | 2022.09.28 |
[BOJ] 10773: 제로 (0) | 2022.09.28 |
[BOJ] 10828: 스택 (0) | 2022.09.28 |