스택 10828

PublicMinsu·2022년 11월 29일
0

문제

접근 방법

스택을 따라 하는? 문제이다.
STL 스택을 사용하면 과연 풀릴까? 싶긴 했다.
배열, 인덱스 하나를 두고 집어넣고 빼는 것을 해주면 된다.

코드

#include <iostream>
#include <string>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n, stack[10001], idx = -1;
    cin >> n;
    for (int i = 0; i < n; ++i)
    {
        string com;
        cin >> com;
        if (com == "push")
        {
            int num;
            cin >> num;
            stack[++idx] = num;
        }
        else if (com == "pop")
        {
            if (idx == -1)
                cout << -1 << '\n';
            else
            {
                cout << stack[idx--] << '\n';
            }
        }
        else if (com == "size")
        {
            cout << idx + 1 << '\n';
        }
        else if (com == "empty")
        {
            if (idx == -1)
                cout << 1 << '\n';
            else
                cout << 0 << '\n';
        }
        else
        {
            if (idx == -1)
                cout << -1 << '\n';
            else
            {
                cout << stack[idx] << '\n';
            }
        }
    }
    return 0;
}

풀이

push면 idx를 증가해 준 곳에 값을 넣고
pop이면 출력한 뒤 idx를 감소시켜주고
size이면 1 더한 값을 보내준다. (인덱스는 0부터 시작이므로)
empty이면 idx가 -1인지 확인해주고
top이면 idx가 위치한 값을 출력해준다.

profile
연락 : publicminsu@naver.com

0개의 댓글