BOJ 10828(스택) 문제 풀이
08 Jul 2018 | PS Stack목차
참조
분류 | URL |
---|---|
문제 | 스택 |
이 글에서 설명하는 코드 | 10828_스택 |
개요
시간복잡도: $ O(N) $
공간복잡도: $ O(N) $
- N은 명령의 수이다.
문제 풀이
이 문제는 말 그대로 스택 그 자체이다. 여기 에서 설명한 5가지 연산만 수행하면 끝이다.
구현
특히나 이 문제는 코딩의 순서를 문제에서 주어진 5가지 명령에 쓰인 그대로 코딩하면 되는 문제이니, 자세한 설명은 생략하겠다.
#include <stack>
#include <string>
#include <iostream>
using namespace std;
int main_10828() {
freopen("input.txt", "r", stdin); // 문제의 입력을 일일이 치기 귀찮을 때 쓰는 방법이다.
ios::sync_with_stdio(false); cin.tie(NULL);
int n;
stack<int> st;
cin >> n;
while (n--) {
string order;
cin >> order;
if (order == "push") { // push 명령 처리
int e;
cin >> e;
st.push(e);
}
else if (order == "pop") { // pop 명령 처리
if (st.empty())
cout << -1 << '\n';
else {
cout << st.top() << '\n';
st.pop();
}
}
else if (order == "size") { // size 명령 처리
cout << st.size() << '\n';
}
else if (order == "empty") { // empty 명령 처리
cout << int(st.empty()) << '\n';
}
else { // top 명령 처리
if (st.empty())
cout << -1 << '\n';
else
cout << st.top() << '\n';
}
}
return 0;
}
주의: 이 코드를 그대로 복붙하여 채점 사이트에 제출하면 틀린다. 그대로 제출하지 말라는 뜻이다. 무언가를 바꿔 주어야 한다.