본문 바로가기
Algorithm/백준

[백준] 10866번 : 덱 / c++

by 코딩친구 2020. 5. 29.
반응형

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

 

10866번: 덱

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

www.acmicpc.net

 

 

[ 코드 ]

 

#include <iostream>
#include <string>
#include <deque>

using namespace std;

int main(){

  ios_base::sync_with_stdio(0);
  cin.tie(0);

  int n;

  cin >> n;

  deque <int> dq;

  for(int i=0; i<n; i++){

    string temp;
    cin >> temp;

    int num;

    if(temp == "push_back"){
      cin >> num;
      dq.push_back(num);
    }
    else if(temp == "push_front"){
      cin >> num;
      dq.push_front(num);
    }
    else if(temp == "pop_front"){
      if(dq.empty()){
        cout << -1 << endl;
      }
      else{
        cout << dq.front() << endl;
        dq.pop_front();
      }
    }
    else if (temp == "pop_back"){
      if (dq.empty()){
        cout << -1 << endl;
      }
      else{
        cout << dq.back() << endl;
        dq.pop_back();
      }
    }
    else if (temp == "size"){
      cout << dq.size() << endl;
    }
    else if (temp == "empty"){
      if (dq.empty()){
        cout << 1 << endl;
      }
      else
        cout << 0 << endl;
    }
    else if (temp == "front"){
      if (dq.empty())
        cout << -1 << endl;
      else
        cout << dq.front() << endl;
    }
    else if (temp == "back"){
      if (dq.empty())
        cout << -1 << endl;
      else
        cout << dq.back() << endl;
    }
  }
  return 0;
}

 

 

c++의 stl deque을 이용한 문제.

 

 

Deque이란?

 

사진 출처 : https://iq.opengenus.org/deque-in-cpp-stl/

 

 

양쪽에서 모두 입력과 출력이 가능한 자유도가 스택과 큐에비해서 높은 자료구조.

 

 

 

 

 

여기서 눈여겨 볼 것은 main 함수 다음에 바로 오는

 

ios_base::sync_with_stdio(0);

cin.tie(0);

 

이 부분이다.

 

 

 

이 말은

 

C 표준 스트림과 C++ 표준 스트림 간의 동기화를 비활성화한다는 뜻이다.

 

단점 : C 및 C++ 스타일 I/O를 혼합하여 쓰는 것이 불가능해진다.

 

장점 : 다른 스레드의 출력이 인터리브 될 수 있지만 데이터 경쟁이 발생하지 않으므로 스레드로부터 안전하다.

 

        동기화를 끊으면 사용하는 버퍼의 수가 줄어들기 때문에 실행속도 자체는 향상된다.

 

 

 

 

 

더 자세한 것은 다음 포스트에서 다뤄보도록 하겠다.

 

반응형