10828 - 스택
10814 문제 링크
접근법
앞에서 풀었던 큐 문제와 비슷한 접근법으로 생각했습니다. 달라졌던 부분만 제외하고 새롭게 만들었습니다. 스택에서는 TOP만 고려하여 진행하면 됩니다.
#include <iostream>
#include <string>
using namespace std;
class Stack{
int S_array[10001];
public:
int Top;
void push(int x);
void pop();
void size();
void empty();
void top();
Stack(){
Top =0;
}
};
void Stack::push(int x)
{
S_array[Top] = x;
Top+=1;
}
void Stack::pop()
{
if(Top == 0)
{
printf("-1\n");
}else
{
Top -= 1;
printf("%d\n", S_array[Top]);
}
}
void Stack::size()
{
printf("%d\n",Top);
}
void Stack::empty()
{
if( Top == 0)
{
printf("1\n");
}else
{
printf("0\n");
}
}
void Stack::top()
{
if(Top == 0)
{
printf("-1\n");
}else
{
printf("%d\n",S_array[Top-1]);
}
}
int main(int argc, char *argv[])
{
int N=0;
int x;
scanf("%d",&N);
string check;
Stack S = Stack();
for(int i=0; i<N; i++)
{
cin >> check;
if(check == "push")
{
scanf("%d",&x);
S.push(x);
}else if(check == "size")
{
S.size();
}else if(check == "empty")
{
S.empty();
}else if(check == "pop")
{
S.pop();
}else if(check == "top")
{
S.top();
}
}
return 0;
}
결론
스택은 TOP에 대한 부분만 생각하면 되서 오히려 쉬웠던것 같다.