#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;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 10799번] 쇠막대기 (0) | 2024.10.14 |
---|---|
[C++ / 백준 17413번] 단어 뒤집기 2 (0) | 2024.10.14 |
[C++/백준 1158번] 요세푸스 문제 (0) | 2024.10.12 |
[C++/백준 10845번] 큐 (0) | 2024.10.12 |
[C++/백준 1874번] 에디터 (0) | 2024.10.12 |