[백준 | Javascript] 10845

박기영·2022년 9월 1일
0

백준

목록 보기
94/127
post-custom-banner

기초 알고리즘 1/2. 200 - 자료 구조 1
10845번. 큐

문제

10845번 문제 링크

solution

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const iter = Number(input.shift());

// 큐 생성
let queue = [];

// 시간 초과를 방지하기 위한 ans 배열
let ans = [];

for(let i = 0; i < iter; i++){
    let [cmd, num] = input[i].split(" ");
    
    if(cmd === "push"){
        queue.push(num);
    } else if(cmd === "pop"){
        if(queue.length > 0){
            ans.push(queue.shift());
        } else {
            ans.push(-1);
        }
    } else if(cmd === "size"){
        ans.push(queue.length);
    } else if(cmd === "empty"){
        if(queue.length > 0){
            ans.push(0);
        } else {
            ans.push(1);
        }
    } else if(cmd === "front"){
        if(queue.length > 0){
            ans.push(queue[0]);
        } else {
            ans.push(-1);
        }
    } else{
        if(queue.length > 0){
            ans.push(queue[queue.length - 1]);
        } else{
            ans.push(-1);
        }
    }
}

console.log(ans.join("\n"));

큐는 스택과는 또 다른 자료 구조이다.
스택은 LIFO(Last In First Out)이라는 구조를 가진다.
반면, 큐는 FIFO(Fist In First Out)이라는 구조를 가진다.

쉽게 말하면
스택은 어떤 바구니에 책을 한권씩 쌓아놓고, 가장 처음 넣은 책을 꺼내기 위해서는 맨 위에서부터 하나씩 꺼내나가는 것이다.
바구니가 스택, 책이 데이터이다.

큐는 터널에 차가 지나다니는데, 터널은 차선 변경이 불가능해서 차들이 일렬로 가고 있다고 치자. 그러면 터널에 가장 먼저 들어간 차가, 가장 먼저 터널을 빠져나오게 된다.
터널이 큐, 차가 데이터이다.
예시가 좀..ㅋ..

아무튼, 그런 구조이기 때문에 명령어의 pop을, 우리는 shift로 해석해야한다.
또한, 가장 앞에 있는 값은 인덱스가 0인 값이고
가장 뒤에 있는 값은 인덱스가 queue.length - 1인 값이다.

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글