PS/BaekJoon

[BaekJoon 10845번] 큐(C++)

박땅콩 2022. 7. 14.
728x90

※주의※

저의 풀이가 정답은 아닙니다.

다른 코드가 더 효율적이거나 좋을 수 있습니다.

언제나 다른 사람의 코드는 참고만 하시기 바랍니다.

 

 

[문제 풀이 사이트]

 

 

 

10845번: 큐

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

www.acmicpc.net

 

 

[문제 설명]

 

 

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

명령은 총 여섯 가지이다.

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

 

 

[입력]

 

 

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 

주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

 

 

[출력]

 

 

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

 

 

[문제 풀이]

 

 

큐에 대한 내용을 잊지 않기 위해 이번주 문제로 선정했다.

 

풀이법은 문제 설명대로 차례대로 풀면되고 STL에서 제공하는 큐를 사용했다.

필자의 경우 큐가 비었을 때, 큐가 비어있지 않을 때로 나누어서 풀었다.

 

 

 

[C++ 큐] Queue 기본 사용법

C++의 STL에서 사용하는 Queue(큐)의 기본 사용법에 대해 알아보려고 합니다. 목차 Queue(큐) 란? Queue(큐)의 기본 사용법 1. Queue(큐) 란? Queue(큐)는 먼저 집어넣은 데이터가 먼저 나오는 구조(First In Firs.

park-peanut.tistory.com

 

 

[최종 코드]

 

 

[GitHub]

 

 

 

GitHub - SmallPeanutPark/BAEKJOON: Study BaekJoon for Coding Test

Study BaekJoon for Coding Test. Contribute to SmallPeanutPark/BAEKJOON development by creating an account on GitHub.

github.com

 

 

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

int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    queue<int> q;
    int N;
    cin >> N;
    for(int i = 0; i < N; ++i) {
        string command;
        cin >> command;
        if(!q.empty()) {
            // 큐가 비어있지 않을 때
            if(command.compare("push") == 0) {
                // 정수 X를 큐에 넣는 연산이다.
                int X;
                cin >> X;
                q.push(X);
            } else if(command.compare("front") == 0) {
                // 큐가 비어있지 않다면 큐의 가장 앞에 있는 정수를 출력한다.
                cout << q.front() << '\n';
            } else if(command.compare("back") == 0) {
                // 큐가 비어있지 않다면 큐의 가장 뒤에 있는 정수를 출력한다.
                cout << q.back() << '\n';
            } else if(command.compare("size") == 0) {
                // 큐에 들어있는 정수의 개수를 출력한다.
                cout << q.size() << '\n';
            } else if(command.compare("empty") == 0) {
                //큐가 비어있지 않다면 0을 출력한다.
                cout << q.empty() << '\n';
            } else if(command.compare("pop") == 0) {
                // 큐에서 가장 앞의 정수를 빼고, 그 수를 출력한다.
                cout << q.front() << '\n';
                q.pop();
            } else { 
                // nothing 
            }
        } else {
            // 큐가 비어있을 때
            if(command.compare("push") == 0) {
                // 정수 X를 큐에 넣는 연산이다.
                int X;
                cin >> X;
                q.push(X);
            } else if(command.compare("front") == 0) {
                // 큐가 비어있다면 -1을 출력한다.
                cout << -1 << '\n';
            } else if(command.compare("back") == 0) {
                // 큐가 비어있다면 -1을 출력한다.
                cout << -1 << '\n';
            } else if(command.compare("pop") == 0) {
                // 큐가 비어있다면 -1을 출력한다.
                cout << -1 << '\n';
            } else if(command.compare("size") == 0) {
                // 큐에 들어있는 정수의 개수를 출력한다.
                cout << q.size() << '\n';
            } else if(command.compare("empty") == 0) {
                // 큐가 비어있으면 0을 출력한다.
                cout << q.empty() << '\n';
            } else {
                // nothing
            }
        }
    }
}

 

728x90

'PS > BaekJoon' 카테고리의 다른 글

[BaekJoon 1463번] 1로 만들기(C++)  (0) 2022.07.26
[BaekJoon 1850번] 최대공약수(C++)  (0) 2022.07.20
[BaekJoon 5397번] 키로거(C++)  (0) 2022.07.18
[BaekJoon 10773번] 제로(C++)  (0) 2022.07.10
[BaekJoon 2309번] 일곱 난쟁이(C++)  (0) 2022.07.07

댓글