[백준 10866번-C++] 덱
알고리즘 공부/BOJ백준 풀이

[백준 10866번-C++] 덱

http://acmicpc.net/problem/10866

{코드}

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

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

    int n, tmp;
    deque<int> dq;
    string op;
    cin >> n;

    while (n--)
    {
        cin >> op;
        if (op == "push_front")
        {
            cin >> tmp;
            dq.push_front(tmp);
        }
        else if (op == "push_back")
        {
            cin >> tmp;
            dq.push_back(tmp);
        }
        else if (op == "pop_front")
        {
            if (dq.empty()) cout << -1 << '\n';
            else
            {
                cout << dq.front() << '\n';
                dq.pop_front();
            }
        }
        else if (op == "pop_back")
        {
            if (dq.empty()) cout << -1 << '\n';
            else
            {
                cout << dq.back() << '\n';
                dq.pop_back();
            }
        }
        else if (op == "size")
        {
            cout << dq.size() << '\n';
        }
        else if (op == "empty")
        {
            cout << dq.empty() << '\n';
        }
        else if (op == "front")
        {
            if (dq.empty()) cout << -1 << '\n';
            else cout << dq.front() << '\n';
        }
        else if (op == "back")
        {
            if (dq.empty()) cout << -1 << '\n';
            else cout << dq.back() << '\n';
        }
    }

    return 0;
}

{설명}

이 문제는 C++의 deque 라이브러리를 통해 손쉽게 구성할 수 있습니다.

구현해야하는 모든 커맨드가 이미 구현되어 있기 때문에 그대로 사용하면 되며 pop기능과 front/back기능은 덱에 아무런 원소가 없을 경우 에러가 나기 때문에 덱이 비어있는지 아닌지를 empty 메소드를 통해 먼저 파악한 후 수행합니다.