[백준 10828번] 스택

도윤·2023년 4월 16일
0

알고리즘 풀이

목록 보기
1/71

🔗알고리즘 문제

C++에서 string으로 switch문을 사용하지 못 한다는 것을 처음 알게된 문제였다. else if문을 쭉 나열하며 작성한 코드라 조금 찝찝하지만 이거밖에 방법이 없는 것 같아서 그냥 넘어간 문제이다. ㅡㅜㅡ

문제 분석

img

이 문제는 입력으로 주어지는 명령을 처리하는 Stack을 구현하는 문제이다.

발상

단순한 Stack자료구조를 구현하는 문제이기 때문에 vector의 여러 내장함수들을 사용하여 해결할 수 있을 것이라 생각하였다.

push X: X를 vector에 삽입하기
pop: vector에 top 출력하고 삭제하기 만약 vector가 비어있다면 -1
size: vector의 size 출력하기
empty: vector가 비어있으면 1, 아니면 0을 출력하기
top: vector의 top 출력하기 만약 vector가 비어있다면 -1

알고리즘 설계

  1. 입력할 명령의 수를 입력받는다.
  2. 명령의 수 만큼 for문을 돌며 명령을 입력받는다.
  3. 주어진 명령을 실행한다.

코드

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main(){
    vector<int> stack;
    int count;
    cin >> count;

    for(int i = 0; i < count; i++){
        string command;
        cin >> command;

        if(command == "push"){
            int n;
            cin >> n;
            stack.push_back(n);
        }
        else if(command == "pop" || command == "top"){
            if(stack.empty()) cout << -1;
            else {
                cout << stack[stack.size() - 1];
                if(command == "pop") stack.erase(stack.begin() + stack.size() - 1);
            }
        }
        else if(command == "size"){
            cout << stack.size();
        }
        else if(command == "empty"){
            cout << (int)stack.empty();
        }
    }
}
profile
Game Client Developer

0개의 댓글