< [C++/백준 10866번] 덱

프로그래밍 공부/백준 (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;
}