매일 BOJ

(매일 BOJ) C++ 10845번 큐

norepinephrine 2025. 7. 9. 23:35

오늘 푼 푼제는 실버 4 문제인 큐이다.

 

이 문제의 접근법에 대해 간략히 살펴보자.

이 문제는 표준 입력으로 주어지는 명령어에 따라 큐에 원소를 추가(push), 삭제(pop), 큐의 크기(size), 비어 있는지(empty), 맨 앞(front), 맨 뒤(back) 값을 조회하는 동작을 수행하고, 각 명령의 결과를 즉시 출력하는 구현 문제다.

따라서 큐 자료구조의 기본 연산들을 정확히 처리하며, push 명령은 값을 큐에 넣기만 하고, pop/size/empty/front/back 명령에 대해서만 주어진 조건에 따라 결과를 출력하는 것이 핵심일 것이다.

 

단순히 큐를 사용하여 구현하면 되는 문제이기에 간단히 해결할 수 있었다.

 

아래는 작성한 코드다

#include <bits/stdc++.h>
using namespace std;

int main(void){
    ios::sync_with_stdio(0); cin.tie(0);
    int N;
    cin >> N;
    queue<int> q;
    for (int i = 0; i < N; i++){
        string str;
        cin >> str;
        if (str == "push"){
            int X;
            cin >> X;
            q.push(X);
        }

        else if(str == "pop"){
            if (q.size() == 0) cout << -1 << '\n';
            else{
                cout << q.front() << '\n';
                q.pop();
            }
        }

        else if(str == "size") cout << q.size() << '\n';

        else if(str == "empty"){
            if (q.size() == 0) cout << 1 << '\n';
            else cout << 0 << '\n';
        }
        
        else if(str == "front"){
            if (q.size() == 0) cout << -1 << '\n';
            else cout << q.front() << '\n';
        }

        else if (str == "back"){
            if (q.size() == 0) cout << -1 << '\n';
            else cout << q.back() << '\n';
        }
    }

    return 0;
}