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