[c++] 백준 10845: 큐

다미·2022년 10월 9일
0

백준

목록 보기
14/15
post-thumbnail

10845번: 큐

🟡 문제

정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 여섯 가지이다.

  • push X: 정수 X를 큐에 넣는 연산이다.
  • pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 큐에 들어있는 정수의 개수를 출력한다.
  • empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
  • front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

🟡 입력

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

🟡 출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.


👀 코드

/**
 * baekjoon - 10845
 * queue
 */

#include <iostream>
#include <queue>
#include <vector>
#include <sstream>
#include <string>
#define fio ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;

int main(){
    //fio;
    //input
    queue<int> q;
    string str;
    int num;
    int n; cin >> n;
    for (int i = 0; i < n; i++){
        cin >> str;

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

    return 0;
}

📌 해설

해당 문제는 큐의 기본 함수를 사용 및 정리를 하기 위해 푼 문제이다.

우선 큐(Queue)는 대표적인 FIFO 구조로 제일 먼저 넣은 데이터가 처음으로 빠져나오는 것을 알 수 있다. 큐에는 기본함수가 여러개 존재하는데 해당 문제에서 나오는 함수들이 자주 쓰이는 함수이다.

  • 큐 기본함수
  1. push : 데이터를 추가해준다.
  2. pop : 큐의 front 데이터를 삭제한다.
  3. size : 큐의 현재 사이즈를 반환한다.
  4. empty : 큐가 현재 비어있는지 확인한다.
  5. front : 큐의 첫번째 데이터를 반환한다.
  6. back : 큐의 마지막 데이터를 반환한다.

그 외에 것들도 다음과 같다.

  1. swap : 큐1, 큐2의 내용을 바꾸고 싶을 때 사용한다.

0개의 댓글