# 백준 : 스택(10828)
문제
https://www.acmicpc.net/problem/10828소스
(Github: https://github.com/wonjnlee/wallydev/blob/master/bj_10828_stack)#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <list>
using namespace std;
int main(void) {
int count;
int number;
string command;
list<int> stack;
cin>>count;
for(int i=0; i<count; i++) {
cin>>command;
if(command.compare("push") == 0) {
cin>>number;
stack.push_back(number);
}
else if(command.compare("pop") == 0) {
if(stack.size() > 0) {
cout<<stack.back()<<endl;
stack.pop_back();
}
else {
cout<<"-1"<<endl;
}
}
else if(command.compare("size") == 0) {
cout<<stack.size()<<endl;
}
else if(command.compare("empty") == 0) {
if(stack.size() == 0) cout<<"1"<<endl;
else cout<<"0"<<endl;
}
else if(command.compare("top") == 0) {
if(stack.size() > 0) {
cout<<stack.back()<<endl;
}
else {
cout<<"-1"<<endl;
}
}
}
return 0;
}
풀이
스택에 대해서 자세히 알고싶다면 이곳을 참조하면 좋을 것 같다.솔직히 말해서 '하나도 어렵지 않은' + '완전 기본적인' 문제였지만, 포스팅하는 이유가 있다.
우선 처음에 스택과 큐를 혼동하는 나를 발견했기 때문이고, 가장 기본적인 스택을 다시한번 올려보는 것도 나쁘지는 않겠다는 생각이 있어서였다.
문제는 굉장히 간단하다. 심지어 어떻게 하라는것까지 백준에서 모두 알려주고 있기 때문에, 그대로 구현하면서 스택이 이런애였구나 하고 되짚어보는 시간으로 삼으면 좋을 것 같다.
댓글
댓글 쓰기