궤도

[백준] 10866번 : 덱 본문

💻 현생/⛓ 알고리즘

[백준] 10866번 : 덱

영이오 2021. 3. 26. 18:47

문제

 


풀이

 

덱(deque)을 풀어쓰면 double ended queue이다. 그니까 앞뒤로 접근 가능한 큐라는 건데 빨대라고 생각하면 되겠다.

 

www.cplusplus.com/reference/deque/deque/?kw=deque

 

deque - C++ Reference

difference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t

www.cplusplus.com


풀이

 

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

int main() {
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);
    deque <int> dq;
    int N, num;
    string input;

    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> input;
        if (input.compare("push_front") == 0) {
            cin >> num;
            dq.push_front(num);
        }
        else if (input.compare("push_back") == 0) {
            cin >> num;
            dq.push_back(num);
        }
        else if (input.compare("pop_front") == 0) {
            if (dq.empty())
                cout << -1 << '\n';
            else {
                num = dq.front();
                cout << num << '\n';
                dq.pop_front();
            }
        }
        else if (input.compare("pop_back") == 0) {
            if (dq.empty())
                cout << -1 << '\n';
            else {
                num = dq.back();
                cout << num << '\n';
                dq.pop_back();
            }
        }
        else if (input.compare("size") == 0)
            cout << dq.size() << '\n';
        else if (input.compare("empty") == 0)
            cout << dq.empty() << '\n';
        else if (input.compare("front") == 0) {
            if (dq.empty())
                cout << -1 << '\n';
            else {
                num = dq.front();
                cout << num << '\n';
            }
        }
        else if (input.compare("back") == 0) {
            if (dq.empty())
                cout << -1 << '\n';
            else {
                num = dq.back();
                cout << num << '\n';
            }
        }
    }
}

이번에도 간단하게 함수만 정리하고 끝내겠다.

 

#include <deque> //덱을 사용하기 위한 헤더
deque<int> dq //int형 덱 dq선언

dq.push_front(1) //덱 dq의 맨 앞에 1투입
dq.push_back(1) //덱 dq의 맨 뒤에 1투입
dq.pop_front() //덱 dq의 맨 앞 값 뺌
dq.pop_back() //덱 dq의 맨 뒤 값 뺌
dq.front() //덱 dq의 맨 앞 값 반환
dq.back() //덱 dq의 맨 뒤 값 반환
dq.size() //덱 dq의 크기 반환
dq.empty() //덱 dq가 비어있는지 아닌지 확인
Comments