백준 #10828 스택 c++
2021. 4. 30. 17:55ㆍ백준 문제풀이
반응형




백준 10828 스택 문제이다.
solve.ac에서 제공하는 실버4 문제이다.
문제를 읽어보면 단순히 스택을 구현하라는 문제이다.
물론 이 문제를 어떤 언어로 푸느냐에 따라서 문제 난이도가 천차만별이지만,
대부분의 하이레벨 언어에서는 기본 라이브러리에서 스택을 지원하기 때문에 문제를 푸는 것은 어렵지 않다.
물론 C를 사용해서 풀면, 스택을 다 구현해야 하기 때문에 상당히 복잡하다.
아래는 c++ 코드 전문이다
#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
//
//14
//push 1
//push 2
//top => 2
//size =>2
//empty => 거짓 => 0
//pop => 맨위 => 2
//pop => 맨위 => 1
//pop => 없으니까 => -1
//size => 없으니까 = 0
//empty => 비었으니까 => 1
//pop => 없으니까 => -1
//push 3
//empty => 있으니까 => 0
//top -> 3
stack<int> arr;
int main() {
int op;
int value;
cin >> op;
string s;
for(int i = 0; i < op; i++) {
cin >> s;
if(s == "push") {
cin >> value;
arr.push(value);
}
else if(s == "top") {
if(arr.empty()) {
cout << "-1" << "\n";
}
else {
cout << arr.top() << "\n";
}
}
else if(s == "size") {
cout << arr.size() << "\n";
}
else if(s == "empty") {
cout << arr.empty() << "\n";
}
else if(s == "pop") {
if(!arr.empty()) {
cout << arr.top() << "\n";
arr.pop();
}
else {
cout << "-1" << "\n";
}
}
}
return 0;
}
switch 문이나 삼항연산자를 활용해서 공간 복잡도를 줄일 수 있지만, 굳이 가독성을 해치고 싶지 않았다.
이 문제에서 해결해야하는 문제는 2개가 있는데 pop을 했을 때 -1을 출력하는 것과
빈 배열에서 top을 했을때 -1을 출력하게 해야한다는 것이다.
둘다 쉽게 구현가능하다.
반응형
'백준 문제풀이' 카테고리의 다른 글
| 백준 #2675 문자열 반복 c, python (0) | 2021.05.10 |
|---|---|
| 백준 #1158 요세푸스 문제 c++ (0) | 2021.05.03 |
| 백준 #1406 에디터 c++ (0) | 2021.05.02 |
| 백준 #9012번 괄호 c++ (0) | 2021.05.01 |
| 백준 #9093 단어 뒤집기 C++ (0) | 2021.05.01 |