Programming/Baekjoon

백준 10866 c++

fishersheep 2022. 1. 20. 15:56
반응형

백준: 덱

난이도: 실버4

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <deque>
#include <queue>
using namespace std;


int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	string str;
	deque<int> dq;	//deque 선언

	int n;	
	int temp;
	
	cin >> n;	//명령의 수 입력

	for (int i = 0; i < n; i++)		//명령의 수만큼 반복
	{	
		cin >> str;	//명령입력

		if (str=="push_front")	//push_front는 deque의 front에 데이터를 추가
		{	
			cin >> temp;
			dq.push_front(temp);	
		}
		else if (str == "push_back")	//push_back는 deque의 back에 데이터를 추가
		{	
			cin >> temp;
			dq.push_back(temp);
		}
		else if (str == "pop_front")	//pop_front는 deque의 가장앞에 있는데이터를 삭제
		{	
			if (dq.empty())
				cout << -1 << "\n";
			else
			{
				cout << dq.front() << '\n';
				dq.pop_front();
			}
		}
		else if (str == "pop_back")	//pop_back는 deque의 가장뒤에 있는데이터를 삭제
		{
			if (dq.empty())
				cout << -1 << "\n";
			else
			{
				cout << dq.back() << '\n';
				dq.pop_back();
			}
		}
		else if (str=="size")	//deque의 정수의 개수 반환
			cout << dq.size() << '\n';	
		else if (str == "empty")	//deque가 비었는지 확인
		{
			if (dq.empty())
				cout << 1 << '\n';
			else
				cout << 0 << '\n';
		}
		else if (str == "front")	//가장앞에 데이터 반환, 삭제는하지않는다
		{
			if (dq.empty())
				cout << -1 << '\n';
			else
				cout << dq.front() << '\n';
		}
		else if (str == "back")	//가장뒤에 있는 데이터 반환, 삭제는하지않는다
		{
			if (dq.empty())
				cout << -1 << '\n';
			else
				cout << dq.back() << '\n';	
		}

	}
	return 0;
}
반응형

'Programming > Baekjoon' 카테고리의 다른 글

백준 10820 c++  (0) 2022.01.21
백준 11656 c++  (0) 2022.01.20
백준 10845 c++  (0) 2022.01.20
백준 10828 c++  (0) 2022.01.19
백준 11651 c++  (0) 2022.01.18