https://www.acmicpc.net/problem/10828
#10828: 스택
첫 번째 줄에 지정된 명령의 수 N(1 ≤ N ≤ 10,000)이 주어집니다. 두 번째 줄부터 N개의 줄은 각각 명령을 받습니다. 지정된 정수는 1보다 크거나 같고 100,000보다 작거나 같습니다. 문제에 있다
www.acmicpc.net
정수를 저장하고 입력으로 주어진 명령을 처리하는 스택을 구현하는 프로그램을 작성하십시오.
명령어는 총 5개입니다.
- 푸시 X: 정수 X를 스택에 푸시하는 작업입니다.
- pop: 스택에서 최상위 정수를 팝하고 해당 숫자를 인쇄합니다. 스택에 정수가 없으면 -1이 반환됩니다.
- 크기: 스택의 정수 수를 반환합니다.
- 비어 있음: 스택이 비어 있으면 1을 반환하고 그렇지 않으면 0을 반환합니다.
- top: 스택 맨 위에 정수를 인쇄합니다. 스택에 정수가 없으면 -1이 반환됩니다.
기입
첫 번째 줄에 지정된 명령의 수 N(1 ≤ N ≤ 10,000)이 주어집니다. 두 번째 줄부터 N개의 줄은 각각 명령을 받습니다. 지정된 정수는 1보다 크거나 같고 100,000보다 작거나 같습니다. 문제에 나열되지 않은 명령은 제공되지 않습니다.
누르다
인쇄해야 하는 명령이 주어질 때마다 한 줄에 한 번씩 인쇄됩니다.
설명
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
int n;
cin >> n;
while(n--) {
string order;
cin >> order;
if(order == "push") {
int value;
cin >> value;
s.push(value);
} else if(order == "pop") {
if(s.empty())
cout << -1 << "\n";
else {
cout << s.top() << "\n";
s.pop();
}
} else if(order == "size") {
cout << s.size() << "\n";
} else if(order == "empty") {
cout << s.empty() << "\n";
} else if("top") {
if(s.empty())
cout << -1 << "\n";
else
cout << s.top() << "\n";
}
}
return 0;
}