#10828: 스택

#10828: 스택

C++20(Clang)
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> v;
    for(int i = 0; i < n; i++) {
        string cmd = "";
        cin >> cmd;
        if(cmd == "push") {
            int value = 0;
            cin >> value;
            v.push_back(value);
        }
        else if(cmd == "pop") {
            if(v.empty()) {
                cout << -1 << endl;
            } else {
                cout << v[v.size()-1] << endl;
                v.pop_back();
            }
        }
        else if(cmd == "size") {
            cout << v.size() << endl;
        }
        else if(cmd == "empty") {
            cout << (v.empty() == true ? 1 : 0) << endl;
        }
        else if(cmd == "top") {
            cout << (v.empty() == true ? -1 : v[v.size()-1]) << endl;
        }
    }

    return 0;
}

다른 사람들 stack<int> 아니면 배열인데 나만 vector<int> :sunglasses:
근데 정작 vector가 뭔지도 모름. :sunglasses:

그건 그렇고 다른 사람들 0ms가 어케 나온거지?? ㄷㄷ

버퍼 비우는 endl 쳐내면 0ms 나올수도?
그것도 아니면 벡터 말고 배열까지 쓰거나요.

0ms 짜리 코드 입니다.

흐음… 진짜 예능용이므로 그냥 웃는 목적으로만 보고 넘어가 주시길…

부제를 붙인다면, 데이터스트럭쳐 퀴즈를 데이터스트럭쳐 사용하지 않고 풀어보기,
혹은 스택 퀴즈를 진짜 스택써서 풀어보기 정도가 되지 않을까 싶습니다.

#include <stdio.h>
#include <string>

int limit = -1;
int count = 0;

void stack(int depth, const char* prev)
{
    char input[32] = { 0 };

    while (true)
    {
        if(count++ >= limit) exit(0);
        scanf("%s", input, 32);

        switch (input[0])
        {
            case 's':
                printf("%d\n", depth);
                break;
            case 'e':
                printf("%d\n", depth <= 0 ? 1 : 0);
                break;
            case 't':
                printf("%s\n", prev);
                break;
            case 'p':
            {
                if (input[1] == 'u')
                {
                    char value[32];
                    scanf("%s", value, 32);
                    stack(depth + 1, value);
                }
                else
                {
                    printf("%s\n", prev);
                    if (depth > 0) return;
                }
                break;
            }
        }
    }
}

int main()
{
    scanf("%d", &limit);
    stack(0, "-1");
}