궤도

[백준] 18258번 : 큐 2 본문

💻 현생/⛓ 알고리즘

[백준] 18258번 : 큐 2

영이오 2021. 3. 26. 17:58

문제

 


풀이

 

지난번에 C++의 STL중 하나인 스택을 사용해봤다. 이번에는 큐다.

큐는 FIFO(First In First Out)인 자료구조다.

 

www.cplusplus.com/reference/queue/queue/?kw=queue

 

queue - C++ Reference

container_typeThe second template parameter (Container)Type of the underlying container

www.cplusplus.com


소스코드

 

#include <iostream>
#include <queue>
#include <string>
using namespace std;

int main() {
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);
    queue <int> q;
    int N, num;
    string input;

    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> input;
        if (input.compare("push") == 0) {
            cin >> num;
            q.push(num);
        }
        else if (input.compare("pop") == 0) {
            if (q.empty())
                cout << -1 << '\n';
            else {
                num = q.front();
                cout << num << '\n';
                q.pop();
            }
        }
        else if (input.compare("size") == 0)
            cout << q.size() << '\n';
        else if (input.compare("empty") == 0)
            cout << q.empty() << '\n';
        else if (input.compare("front") == 0) {
            if (q.empty())
                cout << -1 << '\n';
            else
                cout << q.front() << '\n';
        }
        else if (input.compare("back") == 0) {
            if (q.empty())
                cout << -1 << '\n';
            else
                cout << q.back() << '\n';
        }
    }
}

지난 스택 문제처럼 간단한 함수만 정리하고 마치도록 하겠다.

 

#include <queue> //큐를 사용하기 위한 헤더
queue<int> q //int형 큐 q선언

q.push(1) //큐 q에 1투입
q.pop() //큐 q에서 제일 먼저 들어온 값을 뺌
q.front() //큐 q에서 제일 먼저 들어온 값을 반환
q.back() //큐 q에서 제일 마지막에 들어온 값을 반환
q.size() //큐 q의 크기 반환
q.empty() //큐 q가 비어있는지 아닌지 확인
Comments