STL stack을 이용한 풀이와 직접 push, pop, top, size, empty를 구현한 풀이 두가지 방법으로 문제를 풀었다.
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int n;
cin >> n;
stack<int> s;
while (n--)
{
string str;
cin >> str;
if (str == "push")
{
int num;
cin >> num;
s.push(num);
}
else if (str == "pop")
{
if (s.empty())
cout << -1 << '\n';
else
{
cout << s.top() << '\n';
s.pop();
}
}
else if (str == "size")
{
cout << s.size() << '\n';
}
else if (str == "empty")
{
if (s.empty())
cout << 1 << '\n';
else
cout << 0 << '\n';
}
else if (str == "top")
{
if (s.empty())
cout << -1 << '\n';
else
cout << s.top() << '\n';
}
}
}
#include <bits/stdc++.h>
using namespace std;
const int MX = 1000005;
int dat[MX];
int pos = 0;
void push(int x)
{
dat[pos++] = x;
}
void pop()
{
if (pos == 0)
cout << -1 << '\n';
else
{
cout << dat[pos - 1] << '\n';
pos--;
}
}
void size()
{
cout << pos << '\n';
}
void empty()
{
if (pos == 0)
cout << 1 << '\n';
else
cout << 0 << '\n';
}
void top()
{
if (pos == 0)
cout << -1 << '\n';
else
cout << dat[pos - 1] << '\n';
}
int main(void)
{
int n;
cin >> n;
while (n--)
{
string str;
cin >> str;
if (str == "push")
{
int num;
cin >> num;
push(num);
}
else if (str == "pop")
pop();
else if (str == "size")
size();
else if (str == "empty")
empty();
else if (str == "top")
top();
}
}