[자료구조] 큐(Queue)

박소정·2023년 12월 2일
0

알고리즘

목록 보기
3/3
post-thumbnail

큐(Queue)란?🤗

먼저 추가한 데이터를 먼저 반환/삭제하는 선입선출(FIFO - First In First Out) 자료구조이다. 스택과는 반대의 개념을 가진다.

은행이나 병원에서의 번호표를 생각하면 쉽다! 번호표는 먼저 뽑는 순서이기 때문에 FIFO 자료구조이다. 백준 18258번을 통해 구현해보겠다!

적용👏

  • 문제

  • 코드 구현

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

const N = Number(input[0]);
let queue = [];
let result = [];
let front = 0;

for (let i = 1; i <= N; i++) {
  let [cmd, value] = input[i].split(" ");
  value = Number(value);

  switch (cmd) {
    case "push":
      queue.push(value);
      break;
    case "pop":
      if (front < queue.length) {
        result.push(queue[front++]);
      } else {
        result.push(-1);
      }
      break;
    case "size":
      result.push(queue.length - front);
      break;
    case "empty":
      result.push(front === queue.length ? 1 : 0);
      break;
    case "front":
      result.push(queue.length > front ? queue[front] : -1);
      break;
    case "back":
      result.push(queue.length > front ? queue[queue.length - 1] : -1);
      break;
    default:
      break;
  }
}

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

0개의 댓글