ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 큐 - 백준 (10845)
    프로그래밍/algorithm 2021. 12. 1. 10:35

     성공

     
    시간 제한메모리 제한제출정답맞힌 사람정답 비율
    0.5 초 (추가 시간 없음) 256 MB 62031 29509 22762 49.005%

    문제

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

    명령은 총 여섯 가지이다.

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

    입력

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

    출력

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

    예제 입력 1 복사

    15
    push 1
    push 2
    front
    back
    size
    empty
    pop
    pop
    pop
    size
    empty
    pop
    push 3
    empty
    front
    

    예제 출력 1 복사

    1
    2
    2
    0
    1
    2
    -1
    0
    1
    -1
    0
    3
    
     
     

    풀이

    const fs = require('fs');
    const input = fs.readFileSync('../dev/stdin').toString().split('\n');
    
    
    class Queue {
        constructor() {
            this.queue = [];
            this.result = [];
        }
    
        push(x) {
            this.queue.push(x);
        }
    
        pop() {
            if(this.isEmpty()) {
                this.result.push(-1);
                return;
            }
            this.result.push(this.queue.shift());
        }
    
        size() {
            this.result.push(this.queue.length);
        }
    
        front() {
            if(this.isEmpty()) {
                this.result.push(-1);
                return;
            }
            this.result.push(this.queue[0]);
        }
    
        back() {
            if(this.isEmpty()) {
                this.result.push(-1);
                return;
            }
            this.result.push( this.queue[this.queue.length-1]);
        }
    
        empty() {
            this.result.push( this.isEmpty() ? 1 : 0);
        }
    
        isEmpty() {
            return this.queue.length === 0
        }
    }
    const queue = new Queue();
    
    for(let i = 1; i<= +input[0]; i++) {
        const [command, value] = input[i].trim().split(' ');
        switch(command) {
            case 'push':
                queue.push(value);
                break;
            case 'pop':
                queue.pop();
                break;
            case 'size':
                queue.size();
                break;
            case 'empty':
                queue.empty();
                break;
            case 'front':
                queue.front();
                break;
            case 'back':
                queue.back();
                break;
            default:
                break;
        }
    }
    
    console.log(queue.result.join('\n'));

    '프로그래밍 > algorithm' 카테고리의 다른 글

    단어뒤집기2 - 백준(17413)  (0) 2021.12.03
    요세푸스 - 백준(1158)  (0) 2021.12.02
    에디터 - 백준  (0) 2021.11.30
    백준 - 스택수열  (0) 2021.09.06
    leetCode - Remove Duplicates from Sorted Array  (0) 2021.08.10
Designed by Tistory.