프로그래밍 공부/백준 (C++)
[C++/백준 10866번] 덱
Rocketbabydolls
2024. 10. 12. 18:26
#include <iostream>
using namespace std;
class Deque {
private:
int front;
int rear;
int* arr;
int maxSize;
public:
Deque(int size);
~Deque();
void push_front(int input);
void push_back(int input);
int pop_front();
int pop_back();
int size();
int empty();
int front_print();
int back_print();
};
Deque::Deque(int size)
{
arr = new int[size * 2 + 1];
front = rear = size;
maxSize = size;
}
Deque::~Deque()
{
delete arr;
}
void Deque::push_front(int input)
{
arr[--front] = input;
}
void Deque::push_back(int input)
{
arr[rear++] = input;
}
int Deque::pop_front()
{
if (empty()) return -1;
else return arr[front++];
}
int Deque::pop_back()
{
if (empty()) return -1;
else return arr[--rear];
}
int Deque::size()
{
return rear - front;
}
int Deque::empty()
{
if (front == rear) return 1;
else return 0;
}
int Deque::front_print()
{
if (empty()) return -1;
else return arr[front];
}
int Deque::back_print()
{
if (empty()) return -1;
else return arr[rear -1];
}
int main()
{
int N;
cin >> N;
Deque* D = new Deque(N);
for (int i = 0; i < N; i++)
{
string input;
cin >> input;
int tmp;
if (input == "push_front")
{
cin >> tmp;
D->push_front(tmp);
}
if (input == "push_back")
{
cin >> tmp;
D->push_back(tmp);
}
if (input == "pop_front")
{
cout << D->pop_front() << '\n';
}
if (input == "pop_back")
{
cout << D->pop_back() << '\n';
}
if (input == "size")
{
cout << D->size() << '\n';
}
if (input == "empty")
{
cout << D->empty() << '\n';
}
if (input == "front")
{
cout << D->front_print() << '\n';
}
if (input == "back")
{
cout << D->back_print() << '\n';
}
}
delete D;
return 0;
}