article thumbnail image
Published 2022. 9. 28. 20:46

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

 

 

 

 

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

    cin >> cmd;
    if (cmd == "push") {
      cin >> k;
      q.push(k);
    } else if (cmd == "pop") {
      if (q.empty())
        cout << -1 << '\n';
      else {
        cout << q.front() << '\n';
        q.pop();
      }
    } else if (cmd == "size")
      cout << q.size() << '\n';
    else if (cmd == "empty")
      cout << q.empty() << '\n';
    else if (cmd == "front") {
      if (q.empty())
        cout << -1 << '\n';
      else
        cout << q.front() << '\n';
    } else if (cmd == "back") {
      if (q.empty())
        cout << -1 << '\n';
      else
        cout << q.back() << '\n';
    }
  }
}

일반적인 큐의 연산을 수행하는 문제이기 때문에 쉽게 해결할 수 있다.

cmd에 명령어를 입력받고 아래 경우에 따라 처리해주면 된다.

 

"push" => 큐에 push할 데이터를 받은 후 q.push(k)

 

"pop" => 연산을 수행하기 전에 큐가 empty인지 확인한 후에 q.pop()

 

"size" => 큐의 크기를 출력하면 되므로 q.size()

 

"empty" => 큐가 비었는지를 확인하면 되므로 q.empty()

 

"front" => 연산 수행 전에 큐가 비었는지 먼저 확인해야 한다. empty가 아니라면 큐의 앞부분을 출력하면 되므로 q.front()

 

"back" => 연산 수행 전에 큐가 비었는지 먼저 확인해야 한다. empty가 아니라면 큐의 뒷부분을 출력하면 되므로 q.back()

 

 

 

 

 

 

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

[BOJ] 2164: 카드2  (0) 2022.09.29
[BOJ] 18258: 큐2  (0) 2022.09.28
[BOJ] 1874: 스택 수열  (1) 2022.09.28
[BOJ] 10773: 제로  (0) 2022.09.28
[BOJ] 10828: 스택  (0) 2022.09.28
복사했습니다!