#include <iostream>
using namespace std;
int main() {
int cases;
cin >> cases;
int* stack;
int size = 0;
int top = -1;
stack = new int[cases];//case 만큼의 스택 만듦
for (int i = 0; i < cases; i++) {
stack[i] = 0;
}
for (int i = 0; i < cases; i++) {
string command;
cin >> command;
if (command == "push") {
int data;
cin >> data;
if (++top < cases) {
stack[top] = data;
size++;
}
}
else if (command == "pop") {
if (size > 0) {
cout << stack[top] << '\n';
stack[top--] = 0;
size--;
}
else
cout << -1 << '\n';
}
else if (command == "size") {
cout << size << '\n';
}
else if (command == "empty") {
if (size != 0)
cout << 0 << '\n';
else
cout << 1 << '\n';
}
else if (command == "top") {
if (size > 0)
cout << stack[top] << '\n';
else
cout << -1 << '\n';
}
}
delete[] stack;
return 0;
}
스택은 가장 먼저 들어간 데이터가 가장 나중에 나온다. (Last In First Out)
위 코드에서는 스택의 용량을 동적으로 할당하기 위해 포인터를 사용하였고 정수형이므로 정수를 저장하는 스택이다.
size는 스택에 들어가 있는 정수의 개수이며 top은 스택에서 가장 위에 놓여져 있는 요소이다.
push로 데이터를 한 개씩 넣을 수 있고 pop으로 한 개씩 꺼낼 수 있다.
'백준' 카테고리의 다른 글
| [백준] 2750번 - 퀵 정렬 (0) | 2022.01.12 |
|---|---|
| [백준] 18258번 - 큐 기본 (0) | 2022.01.09 |
| [백준] 11047번, 1931번 - 그리디 알고리즘 (0) | 2021.12.31 |
| [백준] 1003번 - 동적 계획법 (0) | 2021.12.30 |
| [백준] 15649번 - 백트래킹 알고리즘, DFS (0) | 2021.12.29 |