티스토리 뷰

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

 

28278번: 스택 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net


switch-case문에서 변수를 선언한 경우, 해당 case를 중괄호{}로 묶어서 사용해야 한다.

#include <iostream>
#include <stack>
#include <string>
#include <sstream>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n;
    (cin >> n).ignore();

    stack<int> st;
    for (int i = 0; i < n; i++) {
        string s;
        getline(cin, s);
        switch (s.at(0)) {
            case '1':
                istringstream iss(s);
                int a, b;
                iss >> a >> b;
                st.push(b);
                break;
            case '2':
                if (!st.empty()) {
                    cout << st.top() << '\n';
                    st.pop();
                } else {
                    cout << -1 << '\n';
                }
                break;
            case '3':
                cout << st.size() << '\n';
                break;
            case '4':
                if (st.empty()) {
                    cout << 1 << '\n';
                } else {
                    cout << 0 << '\n';
                }
                break;
            default:
                if (!st.empty()) {
                    cout << st.top() << '\n';
                } else {
                    cout << -1 << '\n';
                }
                break;
        }
    }
}
Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30