# 28278

이지훈·2025년 10월 14일

코딩테스트 스터디

목록 보기
11/11
#include <iostream>
using namespace std;

class Cstack {
private:
    int* stack;
    int cap;
    int top;
public:
    Cstack(int cap = 1000000){
        stack = new int[cap];
        this->cap = cap;
        top = -1;
    }

    void pushStack(int x){ // 1
        if (top == cap) return;
        stack[++top] = x;
    }

    void two() { // 2
        if (top == -1) return;
        for(int i = 0; i < top; i++) {
            cout << stack[i] << "\n";
        }
    }

    int getSize() { // 3
        return top + 1;
    }

    bool isEmpty() { // 4
        return (top == -1);
    }

    int popStack(){ // 5
        if (top == -1) return -1;
        return stack[--top];
    }
};

int main(void) {
    Cstack s;
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        int v;
        cin >> v;
        switch(v) {
            case 1:
                int x;
                cin >> x;
                s.pushStack(x);
                break;
            case 2:
                s.two();
                break;
            case 3:
                cout << s.getSize() << "\n";
                break;
            case 4:
                cout << s.isEmpty() << "\n";
                break;
            case 5:
                cout << s.popStack() << "\n";
                break;
        }
    }
    return 0;
}

스택 구현 문제 월요일 구현 내용인데

잘못된 부분을 찾은줄 알았는데, 그게 아니라서 정답을 보니까

문제 해석자체를 잘못한거 같아서 난독증있나 싶었다.

https://www.acmicpc.net/board/view/128983

출제자도 인정했다.

근데 여기 답변을 보면 문제를 보고, 해석이 애매하면 예제를 보고 알 수 있어야 한다고 하는데.

물론 타당한 의견이지만
음... 뭔가 비유로 표현하면 레고 조립설명서 같은 느낌... 설명은 잘못됐지만 그림은 이상없죠?

profile
Hello!

0개의 댓글