문제
https://www.acmicpc.net/problem/10866
정답 코드
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");
class Deque {
#array;
constructor() {
this.#array = [];
}
// 정수 x 를 덱의 앞에 넣는다.
pushFront(value) {
this.#array.unshift(value);
}
// 정수 x 를 덱의 뒤에 넣는다.
pushBack(value) {
this.#array.push(value);
}
// 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다.
// 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
popFront() {
if (this.#array.length === 0) {
return -1;
}
return this.#array.shift();
}
// 덱의 가장 뒤에 잇는 수를 빼고, 그 수를 출력한다.
// 만약, 덱에 들어있는 정수가 없는 경우에는 -1 을 출력한다.
popBack() {
if (this.#array.length === 0) {
return -1;
}
return this.#array.pop();
}
// 덱에 있는 정수의 개수를 출력한다.
size() {
return this.#array.length;
}
// 덱이 비어있으면 1을, 아니면 0을 출력한다.
empty() {
if (this.#array.length === 0) {
return 1;
} else {
return 0;
}
}
// 덱의 가장 앞에 있는 정수를 출력한다.
// 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
front() {
if (this.#array.length === 0) {
return -1;
}
return this.#array[0];
}
// 덱의 가장 뒤에 있는 정수를 출력한다.
// 만약 덱에 들어잇는 정수가 없는 경우에는 -1을 출력한다.
back() {
if (this.#array.length === 0) {
return -1;
}
return this.#array[this.#array.length - 1];
}
}
function solution(input) {
const result = [];
const commandCount = input[0];
const deque = new Deque();
for (let i = 1; i <= commandCount; i++) {
const command = input[i].split(" ");
switch (command[0]) {
case "push_front":
deque.pushFront(Number(command[1]));
break;
case "push_back":
deque.pushBack(Number(command[1]));
break;
case "pop_front":
result.push(deque.popFront());
break;
case "pop_back":
result.push(deque.popBack());
break;
case "size":
result.push(deque.size());
break;
case "empty":
result.push(deque.empty());
break;
case "front":
result.push(deque.front());
break;
case "back":
result.push(deque.back());
break;
default:
console.log("잘못된 명령어입니다.");
break;
}
}
return result;
}
console.log(solution(input).join("\n"));
'코딩문제풀기' 카테고리의 다른 글
[백준] 10799 | 쇠막대기 | 자바스크립트 (1) | 2025.01.03 |
---|---|
[백준] 2525 | 오븐 시계 | 자바스크립트 (0) | 2025.01.03 |
[백준] 14681 | 사분면 고르기 | 자바스크립트 (0) | 2024.12.30 |
[백준] 1158 | 요세푸스 문제 | Javascript (1) | 2024.12.24 |
[백준] 1406 | 에디터 | 자바스크립트 (0) | 2024.12.10 |