관리 메뉴

Mini

백준 10866 cpp // 덱 사용법 본문

Algorithm/덱

백준 10866 cpp // 덱 사용법

Mini_96 2023. 8. 18. 16:22

https://www.acmicpc.net/problem/10866

 

10866번: 덱

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

www.acmicpc.net

* 덱?

양방향으로 넣고 뺄수있는 큐를 말한다.

#include<bits/stdc++.h>
using namespace std;

int n;
deque<int> d;

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	cin >> n;
	for (int i = 1; i <= n; ++i) {
		string op = "";
		cin >> op;
		if (op == "push_front") {
			int temp = 0;
			cin >> temp;
			d.push_front(temp);

		}
		else if (op == "push_back") {
			int temp = 0;
			cin >> temp;
			d.push_back(temp);
		}
		else if (op == "pop_front") {
			if (d.empty()) {
				cout << "-1\n";
				continue;
			}
			int temp = d.front();
			cout << temp << "\n";
			d.pop_front();
		}
		else if (op == "pop_back") {
			if (d.empty()) {
				cout << "-1\n";
				continue;
			}
			int temp = d.back();
			cout << temp << "\n";
			d.pop_back();
		}
		else if (op == "size") {
			cout << d.size() << "\n";
		}
		else if (op == "empty") {
			cout << d.empty() << "\n";
		}
		else if (op == "front") {
			if (d.empty()) cout << "-1\n";
			else cout << d.front() <<"\n";
		}
		else if (op == "back") {
			if (d.empty()) cout << "-1\n";
			else cout << d.back() << "\n";
		}
	}

}