[伯俊/C+]10828号:スタック


質問する


整数を格納するスタックを実装し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で5種類ある.
push X:整数Xをスタックに入れる演算.
pop:スタックの一番上の整数を除去し、出力します.スタックに整数がない場合は、-1が出力されます.
size:スタック内の整数の個数を出力します.
空:スタックが空の場合、1または0が出力されます.
top:スタックの一番上の整数を出力します.スタックに整数がない場合は、-1が出力されます.
質問の表示

入力


1行目に与えられるコマンド数N(1≦N≦10000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.

しゅつりょく


出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.



アイデア


コード#コード#

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int main() {
	int N;	// 반복 횟수
	stack<int> stk;
	cin >> N;
	string cmd;	// 명령어
	while (N--) {
		cin >> cmd;
		if (cmd == "push") {
			int val;
			cin >> val;
			stk.push(val);
		}
		else if (cmd == "pop") {
			if (stk.size() == 0) {
				cout << -1 << endl;
			}
			else {
				cout << stk.top() << endl;
				stk.pop();
			}
		}
		else if (cmd == "size") {
			cout << stk.size() << endl;
		}
		else if (cmd == "empty") {
			if (stk.size() == 0)
				cout << 1 << endl;
			else
				cout << 0 << endl;
		}
		else if (cmd == "top") {
			if (stk.size() == 0) {
				cout << -1 << endl;
			}
			else
				cout << stk.top() << endl;
		}
	}
	return 0;
}

試行錯誤