Development Artist

[Baekjoon, C++] 10866번 : 덱 본문

Algorithm/Baekjoon

[Baekjoon, C++] 10866번 : 덱

JMcunst 2021. 1. 16. 15:49
728x90
반응형

백준 단계별 풀기에서 큐,덱 다섯번째 문제이다.
링크는 아래와 같다.

 

www.acmicpc.net/problem/10866

 

18258번: 큐 2

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

www.acmicpc.net


백준 10866번 문제, 입력, 출력


백준 10866번 입출력 예제 1, 2


1. Deque 라이브러리를 사용한다. 기본적으로 deque 라이브러리에서 제공하는 함수들이 지금 문제의 전부를 해결할 수 있다. en.cppreference.com/w/cpp/container/deque 해당 링크는 deque 라이브러리를 정리한 곳이다.

Deque member type

 

Deque Member Function


 


#include<iostream>
#include<deque>

using namespace std;

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

    int numberOfCommand;
    deque<int> deque;
    string str_command;

    cin >> numberOfCommand;

    for (int i = 0; i < numberOfCommand; i++) {
        cin >> str_command;

        if (str_command == "push_front") {
            int num;
            cin >> num;
            deque.push_front(num);
        }
        else if (str_command == "push_back") {
            int num;
            cin >> num;
            deque.push_back(num);
        }
        else if (str_command == "pop_front") {
            if (!deque.empty()) {
                cout << deque.front() << "\n";
                deque.pop_front();
            }
            else {
                cout << -1 << "\n";
            }
        }
        else if (str_command == "pop_back") {
            if (!deque.empty()) {
                cout << deque.back() << "\n";
                deque.pop_back();
            }
            else {
                cout << -1 << "\n";
            }
        }
        else if (str_command == "size") {
            cout << deque.size() << "\n";
        }
        else if (str_command == "empty") {
            if (deque.empty()) {
                cout << 1 << "\n";
            }
            else {
                cout << 0 << "\n";
            }
        }
        else if (str_command == "front") {
            if (!deque.empty()) {
                cout << deque.front() << "\n";
            }
            else {
                cout << -1 << "\n";
            }
        }
        else if (str_command == "back") {
            if (!deque.empty()) {
                cout << deque.back() << "\n";
            }
            else {
                cout << -1 << "\n";
            }
        }
    }
	
	return 0;
}

이상으로 Deque 문제를 마치겠다.

728x90
반응형
Comments