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