스택을 따라 하는? 문제이다.
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가 위치한 값을 출력해준다.