백준 #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 |