#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
출제자도 인정했다.
근데 여기 답변을 보면 문제를 보고, 해석이 애매하면 예제를 보고 알 수 있어야 한다고 하는데.
물론 타당한 의견이지만
음... 뭔가 비유로 표현하면 레고 조립설명서 같은 느낌... 설명은 잘못됐지만 그림은 이상없죠?