• [ 장르 ] Deque
  • [ 문제 ]
 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 ��

www.acmicpc.net

  • My Code
#include <iostream>
#include <deque>

using namespace std;
int main()
{
	cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);
	int opcnt,i = 0,data;
	string str;
	deque<int> que;
	
	cin >> opcnt;
	while (i < opcnt)
	{
		cin >> str;
		if (!str.compare("push_back"))
		{
			cin >> data;
			que.push_back(data);
		}
		else if (!str.compare("push_front"))
		{
			cin >> data;
			que.push_front(data);
		}
		else if (!str.compare("front"))
		{
			if (que.empty()) cout << -1 << '\n';
			else cout << que.front() << '\n';
		}
		else if (!str.compare("back"))
		{
			if (que.empty()) cout << -1 << '\n';
			else cout << que.back() << '\n';
		}
		else if (!str.compare("pop_front"))
		{
			if (que.empty()) cout << -1 << '\n';
			else
			{
				cout << que.front() << '\n';
				que.pop_front();
			}
		}
		else if (!str.compare("pop_back"))
		{
			if (que.empty()) cout << -1 << '\n';
			else
			{
				cout << que.back() << '\n';
				que.pop_back();
			}
		}
		else if (!str.compare("size"))
			cout << que.size() << '\n';
		else
			cout << que.empty() << '\n';
		i++;
	}
	return 0;
}

[ CheckPoint ]

  • 기본적인 Deque기능문제이다. C++은 Deque Container가 있기 때문에 deque연산을 쉽게 할 수 있다.
  • Deque는 일반 queue와 달리 queue는 FIFO( First In First Out )으로
    들어가고 나가는 방향이 하나로, 보통 front, rear(back)으로 연산을 진행한다. 먼저 들어간 정보가 나올때도 가장 먼저 나간다.
  • Deque는 들어가고 나가는 방향이 양방향이다. front,back 두 방향에서
    연산이 가능하다. 
728x90
반응형

'Algorithm Practice > [ Baekjoon ]' 카테고리의 다른 글

[Baekjoon][#1920] 수 찾기  (0) 2020.09.25
[Beakjoon][#1021] 회전하는 큐  (0) 2020.09.25
[Baekjoon][#11729] 하노이 탑 이동순서  (0) 2020.09.23
[Baekjoon][#18258] 큐 2  (0) 2020.09.22
[Baekjoon][#1991] 트리순회  (0) 2020.09.21

+ Recent posts