[C++] BAEKJOON 18258
キュー。
質問する
整数を格納するキューを実装し、入力としてのコマンドを処理するプログラムを作成してください.
命令は全部で6条ある.
Push X:整数Xをキューに入れる演算.
pop:キューから先頭の整数を削除し、出力します.キューに整数がない場合は、-1が出力されます.
size:出力キューの整数の個数.
キューが空の場合、1または0が出力されます.
front:出力キューの一番前の整数.キューに整数がない場合は、-1が出力されます.
back:出力キューの一番後ろの整数.キューに整数がない場合は、-1が出力されます.
入力
1行目に与えられるコマンド数N(1≦N≦200000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.
しゅつりょく
出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
コード#コード#
#include <iostream>
#include <queue>
using namespace std;
int main(void) {
cin.tie(NULL); ios::sync_with_stdio(false);
int N;
cin >> N;
string* input = new string[N];
int *pushVal = new int[N];
queue<int> q;
for (int i = 0; i < N; i ++) {
cin >> input[i];
if (input[i] == "push") cin >> pushVal[i];
}
for (int i = 0; i < N; i++) {
if (input[i] == "push") {
q.push(pushVal[i]);
}
else if (input[i] == "pop") {
if (!q.empty()) {
cout << q.front() << '\n';
q.pop();
}
else {
cout << -1 << '\n';
}
}
else if (input[i] == "size") {
cout << q.size() << '\n';
}
else if (input[i] == "empty") {
if (!q.empty()) {
cout << 0 << '\n';
}
else {
cout << 1 << '\n';
}
}
else if (input[i] == "front") {
if (!q.empty()) {
cout << q.front() << '\n';
}
else {
cout << -1 << '\n';
}
}
else if (input[i] == "back") {
if (!q.empty()) {
cout << q.back() << '\n';
}
else {
cout << -1 << '\n';
}
}
}
return 0;
}
Reference
この問題について([C++] BAEKJOON 18258), 我々は、より多くの情報をここで見つけました
https://velog.io/@hyoomi/C-BAEKJOON-18258
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <iostream>
#include <queue>
using namespace std;
int main(void) {
cin.tie(NULL); ios::sync_with_stdio(false);
int N;
cin >> N;
string* input = new string[N];
int *pushVal = new int[N];
queue<int> q;
for (int i = 0; i < N; i ++) {
cin >> input[i];
if (input[i] == "push") cin >> pushVal[i];
}
for (int i = 0; i < N; i++) {
if (input[i] == "push") {
q.push(pushVal[i]);
}
else if (input[i] == "pop") {
if (!q.empty()) {
cout << q.front() << '\n';
q.pop();
}
else {
cout << -1 << '\n';
}
}
else if (input[i] == "size") {
cout << q.size() << '\n';
}
else if (input[i] == "empty") {
if (!q.empty()) {
cout << 0 << '\n';
}
else {
cout << 1 << '\n';
}
}
else if (input[i] == "front") {
if (!q.empty()) {
cout << q.front() << '\n';
}
else {
cout << -1 << '\n';
}
}
else if (input[i] == "back") {
if (!q.empty()) {
cout << q.back() << '\n';
}
else {
cout << -1 << '\n';
}
}
}
return 0;
}
Reference
この問題について([C++] BAEKJOON 18258), 我々は、より多くの情報をここで見つけました https://velog.io/@hyoomi/C-BAEKJOON-18258テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol