티스토리 뷰
문제 해결 방법
정수를 저장하는 스택을 구현하는 가장 기초적인 스택 문제이다.
여기서 명령은 총 5가지다 : push, pop, size, empty, top
STL 스택을 이용하거나 직접 스택을 구현해서 풀 수 있다.
1. C++ STL 스택으로 구현
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <iostream> #include <string> #include <stack> using namespace std; stack<int>S; int main() { int n; cin >> n; for (int i = 0; i < n; i++) { string str; cin >> str; if (str == "push") { int x; cin >> x; S.push(x); } else if (str == "top") { if (S.empty())cout << "-1"<<"\n"; else cout << S.top() << "\n"; } else if (str == "pop") { if (S.empty())cout << "-1" << "\n"; else { cout << S.top() << "\n"; S.pop(); } } else if (str == "empty") { cout << S.empty() << "\n"; } else { cout << S.size() << "\n"; } } return 0; } | cs |
STL 스택을 사용하면 별다른 구현 없이, 함수 호출로 사용할 수 있다.
STL 스택은 <stack> 라이브러리를 인클루드하면 바로 사용가능하다.
(참고 : using namespace std; 를 반드시 적어줘야 한다)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> #include <string.h> using namespace std; int stack[10001], top = -1; void push(int x){ stack[++top] = x; } int empty() { if (top < 0)return 1; else return 0; } void pop() { if (empty() == 1)cout << "-1"<<"\n"; else { cout << stack[top] << "\n"; stack[top--] = 0; } } int main() { int n; cin >> n; for (int i = 0; i < n; i++) { char str[10]; cin >> str; if (!strcmp(str, "push")) { int x; cin >> x; push(x); } else if (!strcmp(str, "top")) {//top()함수를 만들면 top 변수와 겹치기 때문에 만들지 않음 if (empty() == 1)cout << "-1"<<"\n"; else cout << stack[top] << "\n"; } else if (!strcmp(str, "pop")) { pop(); } else if (!strcmp(str, "empty")) { cout << empty() << "\n"; } else {//empty()함수는 간단하기 때문에 함수를 만들지 않음 cout << top + 1 << "\n"; } } return 0; } | cs |
이 포스트에 자세한 설명이 나와있다
CONTENT BY DEV++
DESIGNED BY DEV++
'백준 문제 풀이' 카테고리의 다른 글
[백준 문제 풀이] 17174번 전체 계산 횟수 풀이 (0) | 2019.05.08 |
---|---|
[백준 문제 풀이] 2579 계단 오르기 (0) | 2017.11.17 |
[백준 문제 풀이] 6757번 팰린드롬 진수 (2) | 2017.10.27 |