article thumbnail image
Published 2022. 9. 29. 17:24

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

 

 

 

 

#include <bits/stdc++.h>
using namespace std;
deque<int> dq;
int n, k;
string cmd;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);

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

STL 덱을 사용해서 구현했다.

 

"push_front" = > k에 정수를 받고 dq.push_font()

 

"push_back" => k에 정수를 받고 dq.push_back()

 

"pop_front" => 덱이 비었는지 검증하고, empty가 아니라면 front 값을 출력 후 pop. empty면 -1 출력.

 

"pop_back" => 덱이 비었는지 검증하고, empty가 아니라면 back 값을 출력 후 pop. empty면 -1 출력.

 

"size" => 덱의 사이즈 출력, dq.size()

 

"empty" => 덱이 비었는지 확인 후 empty면 1, 아니면 0 출력

 

"front" => 덱이 비었는지 검증하고, empty가 아니라면 front 값을 출력. empty면 -1 출력.

 

"back" => 덱이 비었는지 검증하고, empty가 아니라면 back 값을 출력. empty면 -1 출력.

 

 

 

 

 

 

'알고리즘' 카테고리의 다른 글

[BOJ] 1021: 회전하는 큐  (0) 2022.10.01
[BOJ] 4949: 균형잡힌 세상  (0) 2022.09.30
[BOJ] 2164: 카드2  (0) 2022.09.29
[BOJ] 18258: 큐2  (0) 2022.09.28
[BOJ] 10845: 큐  (0) 2022.09.28
복사했습니다!