백준 10866 풀이

목표: 백준 10866 풀기

환경: mac OS Mojave 10.14, CLion

로직

문제이해

deque이란 자료구조 구현문제

문제접근

N제한이 1만이라서, 2만짜리 배열을 만들어서 연산은 string으로 입력받아서 if else 문으로 분기해서 풀었습니다.

vector나 기타 stl로 구현하신분들도 있는데 그 방법이 더 나은것 같음… 또 바보짓함.

#include <iostream>

using namespace std;

const int MAX = 20002;

int data[MAX];
int front,rear,sz;

int main() {

    int n, val;
    string input="";
    cin >> n;
    front = 10000;
    front +=1;
    rear= front-1;
    while(n--){
        cin >> input;
        if(input == "push_back"){
            cin >> val;
            rear++;
            data[rear] = val;
            sz++;
        }else if(input == "push_front"){
            cin >> val;
            front--;
            data[front] = val;
            sz++;
        }else if(input == "back"){
            if( sz == 0){
                cout<<-1<<'\n';
            }else{
                cout<<data[rear]<<'\n';
            }
        }else if(input == "front"){
            if( sz == 0){
                cout<<-1<<'\n';
            }else{
                cout<<data[front]<<'\n';
            }
        }else if(input == "size"){
            cout<<sz<<'\n';
        }else if(input == "empty"){
            cout<< (sz == 0 ? 1 : 0)<<'\n';
        }else if(input == "pop_back"){
            if( sz == 0){
                cout<<-1<<'\n';
            }else{
                cout<<data[rear]<<'\n';
                data[rear--] = 0;
                sz--;
            }
        }else if(input == "pop_front"){
            if( sz == 0){
                cout<<-1<<'\n';
            }else{
                cout<<data[front]<<'\n';
                data[front++] = 0;
                sz--;
            }
        }
    }

    return 0;
}