Baekjoon 10845 큐(Queue)

배혜진·2023년 1월 12일

Baekjoon Class 2

목록 보기
3/7

자료구조 문제풀이 두번째 ! ! !
큐(Queue)에 도전

[문제]

[풀이]

문제는 Queue를 구현하는 것이다. Queue는 LIFO(Last-In, First-Out)의 성격을 가진 Stack과는 다르게 FIFO(First-In, First-Out)의 성격을 가지는 자료구조이다.

앞서 Stack을 구현할때와 마찬가지로, class를 통해 Queue 함수를 만들어보았다.

고려할 점은,
1. 문제에서 주어진대로 크기가 최대 10,000인 배열로 만들 것.
2. test case를 받아와 모두 실행할 것.
3. 입력 시, string을 적절히 이용할 것. (케이스 분류)
4. 변수명과 함수명이 겹치지 않도록 조심할 것 !! (변수로 front를 사용했다가 오류가 나버렸다.. -> f로 수정)
5. C++은 절차 지향적 성격과 객체 지향적 특성을 모두 지니고 있음을 기억하자 !

[최종코드]

#include <iostream>
using namespace std;

class Queue {
public:
    int queue[10000]={0};
    int size;
    int f;
    int rear;

    Queue(){
        size=0;
        f=0;
        rear=0;
    }
    
    
    int empty() {
        if(f==rear){
            return 1;
        }
        else return 0;
    }


    void push (int data){
        rear=rear+1;
        queue[rear]=data;
        size=size+1;
    }

    int pop (void) {
        if(empty()){
            return -1;
        }
        size=size-1;
        f=f+1;
        return queue[f];

    }


    int front() {
        if(empty()){
            return -1;
        }
        else return queue[f+1];
    }

    int back() {
        if(empty()){
            return -1;
        }
        else return queue[rear];
    }
};


int main (void){
    Queue q;
    int N;
    cin>>N;
    for(int i=0; i<N; i++){
        string msg;
        cin>>msg;
        if(msg=="push"){
            int num;
            cin>>num;
            q.push(num);
        }
        else if(msg=="pop"){
            cout<<q.pop()<<endl;
        }
        else if(msg=="size"){
            cout<<q.size<<endl;
        }
        else if(msg=="empty"){
            cout<<q.empty()<<endl;
        }
        else if(msg=="front"){
            cout<<q.front()<<endl;
        }
        else if(msg=="back"){
            cout<<q.back()<<endl;
        }
 

    }
           return 0;
}

[돌아보며]

지난 Stack문제 경험을 기반으로 Queue는 처음부터 끝까지 혼자 힘으로 성공해냈다. 이제 class 사용법을 지난번보다 익힌것 같다.
string을 적절히 이용하면 코드를 보다 간단하게 만들 수 있다. C++ 좋네 !
자료구조때 배운 Circular 형태도 기억해두자.

profile
HYU🦁 Information System 22✨

0개의 댓글