kakasoo

[스택] 스택 (백준 10828번) 본문

프로그래밍/알고리즘 풀이

[스택] 스택 (백준 10828번)

카카수(kakasoo) 2020. 3. 3. 14:43
반응형

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <string>
using namespace std;
 
/*
push X : 정수 X를 스택에 넣는 연산이다.
pop : 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다.
만약 스택에 들어있는 정수가 없는 경우에는 - 1을 출력한다.
size : 스택에 들어있는 정수의 개수를 출력한다.
empty : 스택이 비어있으면 1, 아니면 0을 출력한다.
top : 스택의 가장 위에 있는 정수를 출력한다.만약 스택에 들어있는 정수가 없는 경우에는 - 1을 출력한다.
*/
 
class stack
{
    int top;
    int n;
    int* arr;
public:
    stack(int n)
    {
        this->= n;
        arr = new int[this->n];
        top = -1;
    }
 
    void push(int x)
    {
        if (top < n)
            arr[++top] = x;
        else
            cout << "Stack is full!" << endl;
    }
 
    void pop()
    {
        if (top >= 0)
        {
            cout << arr[top--<< endl;
        }
        else
            cout << -1 << endl;
    }
 
    void size()
    {
        cout << top + +1 << endl;
    }
 
    int empty()
    {
        if (top == -1)
            return 1;
        else return 0;
    }
 
    int topN()
    {
        if (top != -1)
            return arr[top];
        else
            return -1;
    }
};
 
int n;
 
int main(void)
{
    stack s(10000);
 
    cin >> n;
 
    while (n--)
    {
        string command;
        cin >> command;
 
        if (command == "push")
        {
            int num;
            cin >> num;
 
            s.push(num);
        }
        else if (command == "pop")
            s.pop();
        else if (command == "size")
            s.size();
        else if (command == "top")
            cout << s.topN() << endl;
        else if (command == "empty")
            cout << s.empty() << endl;
    }
}

 

백준에서 푸는 모든 문제를 알고리즘에 넣으려고 계획해서 알고리즘에 넣긴 했지만,

사실 알고리즘이라기엔 그냥 자료구조다.

data structure에 넣을까 싶지만, 일단 문제 풀이라서 이 카테고리에 넣었다.

 

어떤 자료형을 만들어보라고 해도 다 만들 자신이 있었는데, 또 시간이 지나서인지

막상 만드려고 하니까 매~우 매우 버벅거렸다.

반응형