Home BOJ - 10828 - 스택
Post
Cancel

BOJ - 10828 - 스택

BOJ - 10828 - 스택

문제


10828번: 스택

https://user-images.githubusercontent.com/71277820/162448682-4ebccdff-43b5-491b-9729-f5dec87f581b.png

문제 개념


  • push X: 정수 X를 스택에 넣는 연산이다.
  • pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 스택에 들어있는 정수의 개수를 출력한다.
  • empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
  • top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

구현


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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <vector>
#include <stack>

using namespace std;
 
//선입 선출 

int main()
{
    vector<int> VectorStack;
    vector<int> answer;
    vector<string> OrderList;

    int num;
    cin >> num;
    for(int i=0; i < num; i++)
    {
        string temp;

        cin >> temp;
        if(temp == "push")
            ++num;
        OrderList.push_back(temp);
    }

    for(int i=0; i < OrderList.size(); i++)
    {
        if(OrderList[i] == "push")
        {
            VectorStack.push_back(stoi(OrderList[i+1]));
        }
        else if(OrderList[i] == "pop")
        {
            if(VectorStack.empty())
                answer.push_back(-1);
            else
            {
                answer.push_back(*(VectorStack.end() - 1));
                VectorStack.pop_back();
            }
        }
        else if(OrderList[i] == "size")
            answer.push_back(VectorStack.size());

        else if(OrderList[i] == "empty")
        {
            if(VectorStack.empty())
                answer.push_back(1);
            else
                answer.push_back(0);
        }

        else if(OrderList[i] == "top")
        {
            if(VectorStack.empty())
                answer.push_back(-1);
            else
            {
                int tmp = *(VectorStack.end() - 1);
                answer.push_back(tmp);
            }
        }
        else
            continue;
    }
    for(auto el : answer)
        cout << el << endl;

    return 0;
}

SOL


  • 입력받은 명령어들을 OrderList에 저장
  • for문을 통해 각각의 명령어에 맞게 임무수행
  • 임무수행 후 answer에 push_back

Reference & 다른 PS 모음집


https://github.com/ggh-png/PS

This post is licensed under CC BY 4.0 by the author.