본문 바로가기

카테고리 없음

[Baekjoon] 10866번 : 덱 (c++)

https://www.acmicpc.net/problem/10866

 

10866번: 덱

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

www.acmicpc.net

deque 라이브러리를 사용해서 문제를 해결했다. q가 비어있지 않은 상태에만 조건문을 처리하도록 해줬다.

 


코드

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

int main(int argc, const char *argv[])
{
    int test, num;
    string input;
    deque<int> q;
    
    cin >> test;
    cin.ignore();
    while(test--){
        cin >> input;
        if(input == "push_back"){
            cin >> num;
            q.push_back(num);
        }
        else if(input == "push_front"){
            cin >> num;
            q.push_front(num);
        }
        else if(input == "front"){
            if(!q.empty()){
                cout << q.front() << "\n";
            }
            else cout << "-1\n";
        }
        else if(input == "back"){
            if(!q.empty()){
            cout << q.back() << "\n";
            }
            else cout << "-1\n";
        }
        else if(input == "size"){
            cout << q.size() << "\n";
        }
        else if(input == "empty"){
            cout << q.empty() << "\n";
        }
        else if(input == "pop_front"){
            if (!q.empty()){
                cout << q.front() << "\n";
                q.pop_front();
            }
            else cout << "-1\n";
         
        }
        else if(input == "pop_back"){
            if (!q.empty()){
                cout << q.back() << "\n";
                q.pop_back();
            }
            else cout << "-1\n";
        }

        
    }
    
  
    return 0;
}