10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
접근 : 큐, 구현
Javascript로 직접 큐를 구현하고 함수형으로 표현
Javascript
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.split("\n")
.map((val) => val.trim());
let answer = [];
class Queue {
constructor() {
this.arr = [];
this.head = 0;
this.tail = 0;
}
push(data) {
this.arr[this.tail++] = data;
}
pop() {
return this.arr[this.head++];
}
size() {
return this.tail - this.head;
}
empty() {
if (this.head === this.tail) return true;
else return false;
}
front() {
return this.arr[this.head];
}
back() {
return this.arr[this.tail - 1];
}
}
let queue = new Queue();
function solution() {
let n = +input.shift();
for (let i = 0; i < n; i++) {
let cmd = input.shift().split(" ");
switch (cmd[0]) {
case "push":
queuePush(+cmd[1]);
break;
case "pop":
queuePop();
break;
case "size":
queueSize();
break;
case "empty":
queueEmpty();
break;
case "front":
queueFront();
break;
default:
queueBack();
break;
}
}
console.log(answer.join("\n"));
}
function queuePush(num) {
queue.push(num);
}
function queuePop() {
if (queue.empty()) answer.push(-1);
else answer.push(queue.pop());
}
function queueSize() {
answer.push(queue.size());
}
function queueEmpty() {
if (queue.empty()) answer.push(1);
else answer.push(0);
}
function queueFront() {
if (queue.empty()) answer.push(-1);
else answer.push(queue.front());
}
function queueBack() {
if (queue.empty()) answer.push(-1);
else answer.push(queue.back());
}
solution();
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 1012 유기농 배추 (C++,Javascript) (0) | 2022.07.04 |
---|---|
[baekjoon] 10866 덱 (Javascript) (0) | 2022.06.30 |
[baekjoon] 10828 스택 (Javascript) (0) | 2022.06.30 |
[baekjoon] 1697 숨바꼭질 (Javascript,C++) (0) | 2022.06.29 |
[baekjoon] 4179 불! (C++,Javascript) (0) | 2022.06.29 |