10866

최명수·2021년 1월 25일

10866번

1.아이디어
자료구조 덱을 공부한뒤 문제를 풀어서 쉽게 풀수있었다. 덱 stl을 이용하여 쉽게 풀었다.

#include <iostream>
#include <deque>
#include <vector>

using namespace std;

int main()
{
    deque <int> d;
    int n;
    cin>>n;
    cin.ignore();
    for(int i=0; i<n; i++)
    {
        string str;
        cin>>str;
        if(str=="push_front")
        {
            int x;
            cin>>x;
            d.push_front(x);
        }
        else if(str=="push_back")
        {
            int y;
            cin>>y;
            d.push_back(y);
        }
        else if(str=="pop_front")
        {
            if(d.size()==0)
            {
                cout<<-1<<'\n';
            }
            else
            {
                cout<<d.front()<<'\n';
                d.pop_front();
            }
                                    
        }
        else if(str=="pop_back")
        {
            if(d.size()==0)
            {
                cout<<-1<<'\n';
            }
            else
            {
                cout<<d.back()<<'\n';
                d.pop_back();
            }
            
        }
        else if(str=="size")
        {
            cout<<d.size()<<'\n';
        }
        else if(str=="empty")
        {
            if(d.size()==0)
            {
                cout<<1<<'\n';
            }
            else
            {
                cout<<0<<'\n';
            }     
            
        }
        else if(str=="front")
        {
            if(d.size()==0)
            {
                cout<<-1<<'\n';
            }
            else
            {
                cout<<d.front()<<'\n';
            }
        }
        else if(str=="back")
        {
            if(d.size()==0)
            {
                cout<<-1<<'\n';
            }
            else
            {
                cout<<d.back()<<'\n';
            }
            
        }
    }
    return 0;
}

3.깨달은점
덱은 큐와 스택과 달리 front(처음)과 rear(끝)에서 삽입삭제 연산이 모두가능한 큐이다. 터널과도 같은 느낌이다. push의경우 push_front(),push_back()가 쓰이고 pop의경우 pop_front(),pop_back() 가 쓰인다.

0개의 댓글