Baekjoon/C++
[백준 28278번] 스택 2
Yo-mi
2023. 10. 6. 02:13
#include <iostream>
using namespace std;
class Stack
{
public:
Stack(int k)
{
this->length = k;
this->top = -1;
this->arr = new int[length];
}
~Stack()
{
delete[] arr;
}
void insert(int n)
{
top++;
arr[top] = n;
}
bool isEmpty()
{
if (top == -1)
return 1;
else
return 0;
}
int size()
{
return top + 1;
}
int pop()
{
if (top == -1)
return -1;
else
{
top--;
return arr[top + 1];
}
}
int getTop()
{
if (top == -1)
return -1;
else
{
return arr[top];
}
}
private:
int length;
int top;
int* arr;
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, command, num;
cin >> n;
Stack Mystack = Stack(n - 1);
for (int i = 0; i < n; i++)
{
cin >> command;
switch (command)
{
case 1:
cin >> num;
Mystack.insert(num);
break;
case 2:
cout << Mystack.pop() << '\n';
break;
case 3:
cout << Mystack.size() << '\n';
break;
case 4:
cout << Mystack.isEmpty() << '\n';
break;
case 5:
if (Mystack.isEmpty())
cout << -1 << '\n';
else
{
cout << Mystack.getTop() << '\n';
}
break;
}
}
}
첫 시도 때 시간초과가 떠서 아래의 코드를 메인 함수에 넣어줬다. 두 줄로 바로 해결되었다.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
문제에서의 입력의 양이 많기 때문에 빠른 입출력 방식을 사용해야 했다.