본문 바로가기
카테고리 없음

BOJ 10828 스택

by 홍code 2022. 3. 21.

문제 링크 : https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

요약

스택을 이용해서 주어지는 명령어의 결괏값을 출력

풀이

스택을 선언해준후 주어진 명령어가 주어졌을 때 조건문을 통해 스택 기본 함수들을 실행한다.

코드

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
31
32
33
34
35
36
37
38
39
40
41
#include<iostream>
#include<stack>
#include<string>
using namespace std;
stack<int>st;
string s;
int n,num;
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> s;
        if (s == "push") {
            cin >> num;
            st.push(num);
        }
        else if (s == "pop") {
            if (!st.empty()) {
                cout << st.top() << "\n";
                st.pop();
            }
            else
                cout << "-1" << "\n";
        }
        else if (s == "size"
            cout << st.size() << "\n";
        else if (s == "empty") {
            if (st.empty()) 
                cout << "1" << "\n";
            else
                cout << "0" << "\n";
        }
        else if (s == "top") {
            if (!st.empty())
                cout << st.top() << "\n";
            else
                cout << "-1" << "\n";
        }
    }
    return 0;
}
cs

댓글