본문 바로가기
Pro Developer/BaekJoon(DataStructure & Algorithm)

[백준 10845번] 큐 (C++)

by 성 언 2022. 2. 13.

https://www.acmicpc.net/problem/10845

 

10845번: 큐

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

www.acmicpc.net

 

이번 포스팅에서는 백준 10845번 문제를 학습합니다.

 

10845번 문제를 위해 큐에 대해 간단히 정리한 포스팅을 보고 오면 도움이 됩니다 :0

 

https://uoa6uoas.tistory.com/10

 

[자료구조 & 알고리즘] 큐 (C++)

이번 포스팅에서는 큐(Queue)에 관해 학습합니다. I) 큐 큐(Queue)는 스택(Stack)과 마찬가지로 대표적인 자료구조이다. 먼저 들어온 자료가 먼저 나가는 (First In First Out) FIFO 방식으로 작동한다. 먼저

uoa6uoas.tistory.com

 

 

문제

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

명령은 총 여섯 가지이다.

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

입력

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

 

출력

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

 

 

피드백

pop, front, back에서 큐의 사이즈가 0이라면 자동으로 -1을 출력해주는 줄 알았다.

--> if 문을 통해 구현해주었다.

pop을 구현 할 때 front를 먼저 해준 후, pop을 진행해야 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다.

#include <iostream>
#include <queue>

using namespace std;

int main(){
    int T;
    cin>>T;
    queue <int> q;
    string s;
    
    for(int i=0; i<T; i++){
        cin>>s;
        
        if( s =="push"){
            int x;
            cin >> x;
            q.push(x);
        }
        else if( s == "pop"){
            if(!q.empty()){
                cout<< q.front()<<"\n";
                q.pop();}
            else {
                cout<< -1<<"\n";
            }
        }
        else if( s=="size"){
            cout<<q.size()<<"\n";        }
        else if (s=="empty"){
            cout<<q.empty()<<"\n";
        }
        else if (s =="front"){
            if(!q.empty())
                cout<<q.front()<<"\n";
            else
                cout<<-1<<"\n";
        }
        else if (s =="back"){
            if(!q.empty())
                cout<<q.back()<<"\n";
            else
                cout<<-1<<"\n";
        }
        
    }
    return 0;
}

 

코드 설명

명령의 수 T를 입력받고, 큐, string 을 선언해준다.

for문에서 string s를 입력 받는다.

push 라면 입력받은 정수를 넣어준다.

pop 라면 큐가 비어있는지 확인한 후, 비어있다면 front와 pop를 차례로 진행한다.

size 라면 큐의 size 함수를 이용해 크기를 출력한다.

empty 라면 큐의 empty 함수를 이용해 비어있는지 출력한다.

front 라면 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

back 라면 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

 

 

 

*유의사항

- 공부 중인 인공지능공학과 대학생이 정리해서 남긴 정리입니다.

- 정확하지 않거나, 틀린 점이 있다면 댓글로 알려주시면 감사하겠습니다.

댓글