문제: https://www.acmicpc.net/problem/10828
#include <bits/stdc++.h>
using namespace std;
stack<int> s;
string cmd;
int n;
int k;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> cmd;
if (cmd == "push") {
cin >> k;
s.push(k);
} else if (cmd == "pop") {
if (s.empty())
cout << -1 << '\n';
else {
cout << s.top() << '\n';
s.pop();
}
} else if (cmd == "size")
cout << s.size() << '\n';
else if (cmd == "empty")
cout << s.empty() << '\n';
else if (cmd == "top") {
if (s.empty())
cout << -1 << '\n';
else
cout << s.top() << '\n';
}
}
}
일반적인 스택 연산을 수행하는 프로그램을 작성하면 되므로 stack의 멤버 함수를 적극 활용했다.
"push" => push 연산을 수행하면 되므로 push하고자 하는 데이터를 입력받은 후 s.push()를 호출한다.
"pop" => 원소를 top에서 꺼낸 후 값을 출력해야 하므로 먼저 s.top()을 출력한 후에 s.pop() 연산을 수행한다.
pop 연산을 하기전에 먼저 스택이 empty인지 확인해야 하므로 s.empty()로 검사한다.
"size" => 스택의 크기를 출력하면 되므로 s.size()를 호출하면 된다.
"empty" => 스택이 비었는지 확인하면 되므로 s.empty()를 호출하면 된다.
"top" => 스택의 top을 출력하는 연산이기 때문에 s.top()을 호출하면 된다.
이때도 마찬가지로 스택이 empty인지 확인해야 하므로 s.empty()로 먼저 검사해야 한다.
'알고리즘' 카테고리의 다른 글
[BOJ] 1874: 스택 수열 (1) | 2022.09.28 |
---|---|
[BOJ] 10773: 제로 (0) | 2022.09.28 |
[BOJ] 1158: 요세푸스 문제 (0) | 2022.09.28 |
[BOJ] 5397: 키로거 (0) | 2022.09.28 |
[BOJ] 1406: 에디터 (0) | 2022.09.28 |