관리 메뉴

cococo-coding

[C++ 풀이] 10845번. 큐 본문

[BOJ] 코드 모음/C++_learning 문제집

[C++ 풀이] 10845번. 큐

_dani 2024. 1. 19. 02:40

문제

풀이

큐에 대한 기본함수를 학습하기 좋은 문제이다.

명령은 push X, pop, size, empty, front, back으로 총 6가지가 있는데 기본함수로 구현할 수 있다.

 

1. push X (데이터 삽입)

X를 입력받고, q.push(X) 처리를 해준다.

따로 출력을 하라는 말은 없으므로 푸쉬만 해준다.

 

2. pop (데이터 삭제)

큐가 비어있는 경우를 q.empty()로 확인해서 -1을 출력한다.

아니라면 가장 앞에 있는 정수를 q.front()로 출력해주고, q.pop()으로 삭제해준다.

 

3. size (큐의 사이즈)

큐의 사이즈를 q.size()로 찾아 출력해준다.

 

4. empty (큐가 비어있는지 확인)

큐가 비어있는지를 확인해주는 함수다.

q.empty()로 확인하고 비어있다면 1을, 아니라면 0을 출력한다.

 

5. front (앞의 데이터 반환)

큐가 비어있는지를 먼저 확인해줘야한다.

비어있다면 -1을 출력하고, 아니라면 q.front()를 출력해준다.

 

6. back(뒤의 데이터 반환)

front와 마찬가지로 큐가 비어있는지를 확인해준다.

비어있다면 -1을 출력하고, 아니라면 q.back()을 출력해준다.

 

코드

#include <iostream>
#include <queue>

using namespace std;
/*
    1. n을 입력받는다.
    2. 각 명령에 따라 원하는 결과를 만든다.
*/

int main() {
    //1
    int n;
    cin >> n;

    //2
    queue <int> q;

    while (n--) {
        string str;
        cin >> str;

        if (str == "push") {
            int num;
            cin >> num;
            q.push(num);
            //cout << q.front() << '\n';
        }
        else if (str == "pop") {
            if (q.empty())cout << "-1" << '\n';
            else {
                cout << q.front() << '\n';
                q.pop();
            }                
        }
        else if (str == "size") {
            cout << q.size() << '\n';
        } 
        else if (str == "empty") {
            if (q.empty()) cout << "1" << '\n';
            else cout << "0" << '\n';
        }
        //front() 와 back()도 cout처리 해줘야함
        else if (str == "front") {
            if (q.empty()) cout << "-1" << '\n';
            else cout << q.front() << '\n';
        }
        else if (str == "back") {
            if (q.empty()) cout << "-1" << '\n';
            else cout << q.back() << '\n';
        }
    }

    return 0;
}