[C++][백준 28278] 스택 2

PublicMinsu·2025년 9월 12일

문제

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

접근 방법

스택을 직접 구현하거나 라이브러리를 활용하면 됩니다.

코드

#include <iostream>
using namespace std;

int N, stackSize, cmd;
int stack[1000001];

int main()
{
    ios::sync_with_stdio(0), cin.tie(0);

    cin >> N;

    while (N--)
    {
        cin >> cmd;

        switch (cmd)
        {
        case 1:
            int X;
            cin >> X;
            stack[stackSize++] = X;
            break;
        case 2:
            if (stackSize > 0)
            {
                cout << stack[--stackSize] << "\n";
            }
            else
            {
                cout << -1 << "\n";
            }
            break;
        case 3:
            cout << stackSize << "\n";
            break;
        case 4:
            cout << (stackSize == 0) << "\n";
            break;
        case 5:
            if (stackSize > 0)
            {
                cout << stack[stackSize - 1] << "\n";
            }
            else
            {
                cout << -1 << "\n";
            }
            break;
        }
    }
    return 0;
}

풀이

배열을 활용하면 스택을 구현할 수 있습니다.
스택이 후입선출이기에 가장 위에 무엇이 있는지를 알아야 합니다. 그렇기에 가장 위를 가리키는 포인터를 하나 두고 옮기면서 사이즈와 값을 변경해 주면 됩니다.

profile
연락 : publicminsu@naver.com

0개의 댓글