[BOJ] 10845 큐

2018. 9. 11. 11:10

1. 문제링크

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


2. 해설

이 문제는 간단하게 큐를 구현하는 문제이다.


3. 소스코드

#include <iostream>
using namespace std;

class queue{
private:
    int q[10001]={0};
    int head=0, tail=0;
public:
    void push(int x){
        q[tail++] = x;
    }
    void pop(){
        head++;
    }
    int front(){
        return q[head];
    }
    int back(){
        return q[tail-1];
    }
    int size(){
        return tail - head;
    }
    int empty(){
        return (tail - head == 0) ? 1 : 0;
    }
};

int main() {
    int t;
    queue q;
    scanf("%d", &t);
    while(t--){
        char arr[10]={0};
        scanf("%s", arr);
        if(arr[0] == 'p' && arr[1] == 'u'){
            int x; scanf("%d", &x);
            q.push(x);
        }
        else if(arr[0] == 'p' && arr[1] == 'o'){
            if(!q.empty()){
                printf("%d\n", q.front());
                q.pop();
            }
            else{
                printf("-1\n");
            }
        }
        else if(arr[0] == 'f'){
            if(!q.empty()){
                printf("%d\n", q.front());
            }
            else{
                printf("-1\n");
            }
        }
        else if(arr[0] == 'b'){
            if(!q.empty()){
                printf("%d\n", q.back());
            }
            else{
                printf("-1\n");
            }
        }
        else if(arr[0] == 's'){
            printf("%d\n", q.size());
        }
        else{
            printf("%d\n", q.empty());
        }
    }
    
    return 0;
}


4. 추가언급

push에서 그냥 head++ 만 해준 것은 head는 계속 증가하기만 하고, 줄어들지 않는다. 그리고 linear queue에서 head앞의 값들은 접근할 일이 전혀 없고, 할 필요도 없기 때문에, 초기화를 시켜주지 않았다.

'프로그래밍 > 문제풀이(boj)' 카테고리의 다른 글

[BOJ] 2229 조짜기  (0) 2018.09.12
[BOJ] 13398 연속합 2  (0) 2018.09.12
[BOJ] 1697 숨바꼭질  (0) 2018.09.11
[BOJ] 2096 내려가기  (0) 2018.09.07
[BOJ] 1526 가장 큰 금민수  (0) 2018.09.07

BELATED ARTICLES

more