기초 알고리즘 1/2. 200 - 자료 구조 1
10866번. 덱
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const iter = input.shift();
let deque = [];
let ans = [];
for(let i = 0; i < iter; i++){
let [cmd, num] = input[i].split(" ");
if(cmd === "push_front"){
deque.unshift(num);
} else if(cmd === "push_back") {
deque.push(num);
} else if(cmd === "pop_front"){
if(deque.length > 0){
ans.push(deque.shift());
} else {
ans.push(-1);
}
} else if(cmd === "pop_back"){
if(deque.length > 0){
ans.push(deque.pop());
} else {
ans.push(-1);
}
} else if(cmd === "size"){
ans.push(deque.length);
} else if(cmd === "empty"){
if(deque.length > 0){
ans.push(0);
} else {
ans.push(1);
}
} else if(cmd === "front"){
if(deque.length > 0){
ans.push(deque[0]);
} else {
ans.push(-1);
}
} else if(cmd === "back"){
if(deque.length > 0){
ans.push(deque[deque.length - 1]);
} else {
ans.push(-1);
}
}
}
console.log(ans.join("\n"));
명령어에 따라 분기처리를 하면 되는 아주 간단한 문제이다.
시간 초과를 피하기위해서 ans에 답을 담아서 한번에 문자열로 출력을 했다.