-
[BOJ] 10828 스택 / C++공부/C, C++ 2023. 1. 3. 19:46
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
#include <iostream> #include <string> #define MAX_CAPACITY 10000 #define EMPTY 0 #define FULL MAX_CAPACITY using namespace std; int N; // 명령의 수 (1<= <=10000) int stack[MAX_CAPACITY] = { 0, }; // stack int sp = EMPTY; // stack pointer string cmd; int num; void push(int n) { if (sp != FULL) { stack[++sp] = n; // sp 먼저 증가 후, n 대입 } } int pop() { if (sp == EMPTY) return -1; int top_num = stack[sp--]; return top_num; } int size() { return sp; } int empty() { if (sp == EMPTY) return 1; else return 0; } int top() { if (sp == EMPTY) return -1; return stack[sp]; } int main(void) { cin >> N; for(int i=0; i<N; i++) { cin >> cmd; if (cmd == "push") { cin >> num; push(num); } else if (cmd == "pop") { int top_num = pop(); cout << top_num << "\n"; } else if (cmd == "size") { int stack_size = size(); cout << stack_size << "\n"; } else if (cmd == "empty") { int is_empty = empty(); cout << is_empty << "\n"; } else if (cmd == "top") { int top_num = top(); cout << top_num << "\n"; } } return 0; }
'공부 > C, C++' 카테고리의 다른 글
[C++] 부동소수점 숫자 자릿수 출력 (0) 2023.01.01 [C++] vector 객체의 최소값/최대값 찾기 (0) 2022.07.19 [C++] STL - map, set (0) 2022.05.12 [C/C++] long long 데이터 형의 shift 연산 수행 (0) 2022.05.03 [C++] 공백으로 문자열 자르기, for each문 (나중에 포스트 하기) (0) 2022.03.18