-
큐 - 백준 (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