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
반응형
'코딩테스트(JavaScript) > 자료구조' 카테고리의 다른 글
백준-1847번(스택 수열) / 자바스크립트 (0) | 2023.10.01 |
---|---|
백준- 10828번(스택) / 자바스크립트 (0) | 2023.10.01 |