방금 자바스크립트로 큐를 구현하는 것을 공부했는데 적용하기 위해서 문제를 풀어봐야겠다.
애먹었던점
아무리 생각해도 돌아가야되는 코드인데 돌아가지가 않았다.
split 할때 trim을 우선으로 해주었더니 가능했다.아마 빈 공백이 섞여있었나보다.
let arr = input[i].trim().split(" ");
문제풀이
class Queue {
constructor() {
this.elements = {};
this.head = 0;
this.tail = 0;
}
enqueue(element) {
this.elements[this.tail] = element;
this.tail++;
}
dequeue() {
const item = this.elements[this.head];
delete this.elements[this.head];
this.head++;
return item;
}
peek() {
return this.elements[this.head];
}
back() {
return this.elements[this.tail - 1];
}
get length() {
return this.tail - this.head;
}
get isEmpty() {
return this.length === 0;
}
}
const fs = require("fs");
BOJkey = true;
var input = fs
.readFileSync(BOJkey ? "./자바스크립트로/input.txt" : "./dev/stdin")
.toString()
.trim()
.split("\n");
let q = new Queue();
let result = [];
for (let i = 1; i <= input[0]; i++) {
let arr = input[i].trim().split(" ");
switch (arr[0]) {
case "push":
q.enqueue(+arr[1]);
break;
case "pop":
if (q.isEmpty) result.push(-1);
else result.push(q.dequeue());
break;
case "size":
result.push(q.length);
break;
case "empty":
if (q.isEmpty) result.push(1);
else result.push(0);
break;
case "front":
if (q.isEmpty) result.push(-1);
else result.push(q.peek());
break;
case "back":
if (q.isEmpty) result.push(-1);
else result.push(q.back());
break;
}
}
console.log(result.join("\n"));
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
[백준/JS] 1185 요세푸스 문제 (0) | 2022.06.28 |
---|---|
자바스크립트 정규표현식 g 옵션의 비밀 (0) | 2022.06.28 |
자바스크립트 queue 구현 (0) | 2022.06.28 |
[백준/JS] 2867 FBI (0) | 2022.06.24 |
[백준/JS] 2671 잠수함식별 (0) | 2022.06.24 |