-
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
#include <iostream> using namespace std; const int MAX = 10000; class bojStack { private: int* stackMem; int top, max; public: bojStack() : top(0), max(MAX) { stackMem = new int[MAX]; }; ~bojStack() { delete[] stackMem; } void Push(const int data); int Pop(); int Size(); bool Empty(); int Top(); bool Full(); }; void bojStack::Push(const int data) { Full() ? NULL : stackMem[top++] = data; } int bojStack::Pop() { if (top == 0) return -1; return Full() ? NULL : stackMem[--top]; } int bojStack::Size() { return top; } bool bojStack::Empty() { return top == 0; } int bojStack::Top() { if (top == 0) return -1; return stackMem[top - 1]; } bool bojStack::Full() { return top == MAX; } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; string order[5] = { "push", "pop", "size", "empty", "top" }; bojStack bjstck; for (int i = 0; i < N; i++) { string order; cin >> order; if (order == "push") { int data = 0; cin >> data; bjstck.Push(data); } else if (order == "pop") cout << bjstck.Pop() << "\n"; else if (order == "size") cout << bjstck.Size() << "\n"; else if (order == "empty") cout << bjstck.Empty() << "\n"; else if (order == "top") cout << bjstck.Top() << "\n"; } return 0; }
'코딩 테스트 > 백준' 카테고리의 다른 글
10845 큐 (0) 2022.02.12 1406 에디터 (0) 2022.02.11 1874 스택 수열 (0) 2022.02.10 9012 괄호 (0) 2022.02.09 9093 단어 뒤집기 (0) 2022.02.08