10828 - 스택

10814 문제 링크

접근법

앞에서 풀었던 큐 문제와 비슷한 접근법으로 생각했습니다. 달라졌던 부분만 제외하고 새롭게 만들었습니다. 스택에서는 TOP만 고려하여 진행하면 됩니다.

#include <iostream>
#include <string>

using namespace std;

class Stack{
    int S_array[10001];

public:
    int Top;


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


    Stack(){
        Top =0;
    }

};


void Stack::push(int x)
{

    S_array[Top] = x;
    Top+=1;

}


void Stack::pop()
{
    if(Top == 0)
    {
        printf("-1\n");
    }else
    {
        Top -= 1;
        printf("%d\n", S_array[Top]);


    }
}

void Stack::size()
{
    printf("%d\n",Top);
}



void Stack::empty()
{
    if( Top == 0)
    {
        printf("1\n");
    }else
    {
        printf("0\n");
    }

}


void Stack::top()
{
    if(Top == 0)
    {
        printf("-1\n");
    }else
    {
        printf("%d\n",S_array[Top-1]);
    }
}









int main(int argc, char *argv[])
{
    int N=0;
    int x;
    scanf("%d",&N);
    string check;
    Stack S = Stack();

    for(int i=0; i<N; i++)
    {

        cin >> check;

        if(check == "push")
        {
            scanf("%d",&x);
            S.push(x);

        }else if(check == "size")
        {
            S.size();

        }else if(check == "empty")
        {
            S.empty();

        }else if(check == "pop")
        {
            S.pop();

        }else if(check == "top")
        {
            S.top();

        }


    }


    return 0;
}

결론

스택은 TOP에 대한 부분만 생각하면 되서 오히려 쉬웠던것 같다.

업데이트: