본문 바로가기

🖥️ 오늘의 백준

백준 10866번 : 덱 [C++]

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

 

10866번: 덱

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

www.acmicpc.net

 

전체코드

#include <iostream>
#include <deque>
using namespace std;

class dq {
	deque<int> Deque;

public:
	void pushFront(int x) {
		Deque.push_front(x);
	}
	void pushBack(int x) {
		Deque.push_back(x);
	}
	void popFront() {
		if (Deque.size() == 0) {
			cout << "-1\n";
		}
		else {
			cout << Deque.front() <<"\n";
			Deque.pop_front();
		}
	}
	void popBack() {
		if (Deque.size() == 0) {
			cout << "-1\n";
		}
		else {
			cout << Deque.back() << "\n";
			Deque.pop_back();
		}
	}
	void Size() {
		cout << Deque.size() <<"\n";
	}
	void Empty() {
		if (Deque.empty()) {
			cout << "1\n";
		}
		else {
			cout << "0\n";
		}
	}
	void Front() {
		if (Deque.size() == 0) {
			cout << "-1\n";
		}
		else {
			cout << Deque.front() << "\n";
		}
	}
	void Back() {
		if (Deque.size() == 0) {
			cout << "-1\n";
		}
		else {
			cout << Deque.back() << "\n";
		}
	}
};

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

	int N;
	cin >> N;

	string str;
	int x;

	for (int i = 0; i < N; i++) {
		cin >> str;

		if (str == "push_front") {
			cin >> x;
			que.pushFront(x);
		}
		else if (str == "push_back") {
			cin >> x;
			que.pushBack(x);
		}
		else if (str == "pop_front") {
			que.popFront();
		}
		else if (str == "pop_back") {
			que.popBack();
		}
		else if (str == "size") {
			que.Size();
		}
		else if (str == "empty") {
			que.Empty();
		}
		else if (str == "front") {
			que.Front();
		}
		else if (str == "back") {
			que.Back();
		}
	}

	

    return 0;
}

 

아래는 큐로 풀수 있는 같은 문제이다. 풀이는 생략

https://hihajin.tistory.com/42

 

백준 18258번 : 큐 2 | 예외처리 [C++]

https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고,

hihajin.tistory.com