(BOJ)(C++) 백준 #108282: 스택

https://www.acmicpc.net/problem/10828

문제

정수를 저장하고 입력으로 주어진 명령을 처리하는 스택을 구현하는 프로그램을 작성하십시오.

명령어는 총 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;
}