GitHubSeob

C++ / 백준 / 10866 / 덱 본문

Baekjoon/Silver

C++ / 백준 / 10866 / 덱

GitHubSeob 2022. 3. 7.

문제

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

 

10866번: 덱

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

www.acmicpc.net

문제풀이

deque를 이용해 풀었다.

- push_front는 dq.push_front()

- push_back은 dq.push_back()

- pop_front는 비어있지 않다면 dq.front() 값을 출력하고 dq.pop_front()를, 비어있다면 -1을 출력한다.

- pop_back는 비어있지 않다면 dq.back() 값을 출력하고 dq.pop_back()를, 비어있다면 -1을 출력한다.

- size는 dq.size()

- empty는 dq.empty()

- front는 비어있지 않다면 dq.front() 값을 출력하고, 비어있다면 -1을 출력한다.

- back은 비어있지 않다면 dq.back() 값을 출력하고, 비어있다면 -1을 출력한다.

마지막으로 push_front or push_back을 제외한 명령이 입력되면 줄 바꿈을 해준다.

 

코드

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

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

	int N(0), num(0);
	cin >> N;
	string cmd("");
	deque<int>dq;

	while (N--) {
		cin >> cmd;
		if (cmd == "push_front") {
			cin >> num;
			dq.push_front(num);
		}
		else if (cmd == "push_back") {
			cin >> num;
			dq.push_back(num);
		}
		else if (cmd == "pop_front") {
			if (!dq.empty()) {
				cout << dq.front();
				dq.pop_front();
			}
			else cout << -1;
		}
		else if (cmd == "pop_back") {
			if (!dq.empty()) {
				cout << dq.back();
				dq.pop_back();
			}
			else cout << -1;
		}
		else if (cmd == "size") {
			cout << dq.size();
		}
		else if (cmd == "empty") {
			cout << dq.empty();
		}
		else if (cmd == "front") {
			if (!dq.empty()) {
				cout << dq.front();				
			}
			else cout << -1;
		}
		else if (cmd == "back") {
			if (!dq.empty()) {
				cout << dq.back();				
			}
			else cout << -1;
		}
		if (cmd.substr(0, 4) != "push")
			cout << '\n';
	}
}

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

C++ / 백준 / 1935 / 후위 표기식2  (0) 2022.03.13
C++ / 백준 / 1966 / 프린터 큐  (0) 2022.03.11
C++ / 백준 / 2164 / 카드2  (0) 2022.03.07
C++ / 백준 / 9012 / 괄호  (0) 2022.03.07
C++ / 백준 / 10828 / 스택  (0) 2022.03.07