코딩테스트(JavaScript)/자료구조

백준- 10845번(큐) / 자바스크립트

paintover23 2023. 10. 1. 20:19
728x90

스택과 대응되는 큐문제도 풀이하였다. 스택 문제 풀이 경험이 있어 손쉽게 풀 수 있었다.

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

const arr = input.slice(1);

const que = []; // 큐에 쌓이는 값(안보이는 값)
const answer = []; // "출력" 값 (보이는 값)

function solution() {
  for (let i = 0; i < arr.length; i++) {
    let command = arr[i].split(' ')[0];
    let num = arr[i].split(' ')[1];

    switch (command) {
      case 'push':
        que.push(num);
        break;

      case 'pop':
        answer.push(que.shift() || -1);
        break;

      case 'size':
        answer.push(que.length);
        break;

      case 'empty':
        answer.push(que.length == 0 ? 1 : 0);
        break;

      case 'front':
        answer.push(que[0] || -1);
        break;

      case 'back':
        answer.push(que[que.length - 1] || -1);
        break;
    }
  }
  console.log(answer.join('\n'));
}

solution();

 

풀이 포인트 및  배운점

1. stack과 queue 의  데이터 흐름 구분하기:

    - stack은 LIFO, queue는 FIFO

 

2.원하는 조건 만족하면 break 문 꼭 걸기:

  • break는 switch 문에서 한 case의 실행을 종료하고 switch 문을 벗어나게 한다.
  • break를 생략하면 연속적인 case들이 실행되게 된다 (fall through).
  • 명시적으로 연속적인 case 실행하고자 때를 제외하고는, 일반적으로 break 생략하는 것은 버그를 유발할 있으므로 주의가 필요.

3. 할당 연산자("=") 와 헷갈리지 않도록 주의:

     answer.push(que.length == 0 ? 1 : 0); 이 부분에서 처음에 =를 사용해서 오답이 되었다. 기본적인 부분이므로 실수하지 않도록 주의가 필요하다.

 

 

 

 

728x90
반응형