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

백준 C++ 10828

by park_hama 2024. 7. 30.

 

배열로 구현해 보았는데, 동적 할당으로 구현하거나, C++ STACK헤더 파일을 써봐도 좋을 것 같다.

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

int my_stack[10001];
int my_size = 0; // stack에 들어 있는 수

void push(int a);
int top();
int size();
int pop();
int empty();

int main() {
    int n;
    int temp;
    string str;
    cin >> n;

    for (int i = 0; i < n; i++) {
        cin >> str;

        if (str == "push") {
            cin >> temp;
            push(temp);
        }
        else if (str == "pop") {
            cout << pop() << '\n';
        }
        else if (str == "size") {
            cout << size() << '\n';
        }
        else if (str == "empty") {
            cout << empty() << '\n';
        }
        else if (str == "top") {
            cout << top() << '\n';
        }
    }

    return 0;
}

void push(int a) {
    my_stack[my_size] = a;
    my_size++;
}

int pop() {
    if (empty() == 1)
        return -1;
    else {
        my_size--;
        return my_stack[my_size];
    }
}

int top() {
    if (empty() == 0)
        return my_stack[my_size - 1];
    else
        return -1;
}

int empty() {
    return my_size == 0 ? 1 : 0;
}

int size() {
    return my_size;
}