알고리즘 문제/백준

[C++] 덱(deque) - 10866

우대비 2022. 11. 18. 19:47
반응형
#include <iostream>
#include <string>
using namespace std;

class Deque
{
public:
	void push_front(int n)
	{
		_arr[_front--] = n;
		_front = (10000 + _front) % 10000;
		_size++;
	}
	void push_back(int n)
	{
		_arr[_back++] = n;
		_back = (10000 + _back) % 10000;
		_size++;
	}
	void pop_front()
	{
		if (_size == 0)
			return;
		_front = (10000 + _front + 1) % 10000;
		_size--;
	}
	void pop_back()
	{
		if (_size == 0)
			return;

		_back = (10000 + _back - 1) % 10000;
		_size--;
	}
	int size()
	{
		return _size;
	}
	bool empty()
	{
		if (_size == 0)
			return true;
		return false;
	}
	int front()
	{
		if (_size == 0)
			return -1;
		int a = (10000 + (_front + 1)) % 10000;
		return _arr[a];
	}
	int back()
	{
		if (_size == 0)
			return -1;
		int a = (10000 + (_back  - 1)) % 10000;

		return _arr[a];

	}
public:
	int _arr[10000] = {};
	int _front = 0;
	int _back = 1;
	int _size = 0;
};
int main()
{
	Deque dq;
	string str;
	int N;
	int n;

	cin >> N;

	while (N--)
	{
		cin >> str;
		if (str == "push_front")
		{
			cin >> n;
			dq.push_front(n);
		}
		else if (str == "push_back")
		{
			cin >> n;
			dq.push_back(n);
		}
		else if (str == "pop_front")
		{
			if (!dq.empty())
			{
				cout << dq.front() << endl;
				dq.pop_front();
			}
			else
				cout << -1 << endl;
		}
		else if (str == "pop_back")
		{
			if (!dq.empty())
			{
				cout << dq.back() << endl;
				dq.pop_back();
			}
			else
				cout << -1 << endl;
		}
		else if (str == "size")
		{
			cout << dq.size() << endl;
		}
		else if (str == "empty")
		{
			if (dq.empty())
				cout << 1 << endl;
			else
				cout << 0 << endl;
		}
		else if (str == "front")
		{
			if (dq.empty())
				cout << -1 << endl;
			else
				cout << dq.front() << endl;
		}
		else if (str == "back")
		{
			if (dq.empty())
				cout << -1 << endl;
			else
				cout << dq.back() << endl;
		}
	}

	return 0;

}
반응형
LIST

'알고리즘 문제 > 백준' 카테고리의 다른 글

[C++] 쇠막대기 - 10799  (0) 2022.11.19
[C++] 단어 뒤집기2(stack) - 17413  (1) 2022.11.18
[C++] 스택 - 10828  (0) 2022.11.17
[C++] 요세푸스(Queue) - 1158  (0) 2022.11.16
[C++] 에디터(list) - 1406  (0) 2022.11.16