https://www.acmicpc.net/submit/10845/50614846
const fs = require("fs");
let input = fs.readFileSync(0).toString().split('\n');
N = Number(input[0]);
const x = input.slice(1);
const lis = [];
ans = ""
const calc = (el, list) =>{
let x = el[1];
switch (el[0]){
case 'push':
list.push(x);
break;
case 'pop':
if (0 === list.length ){
ans += "-1\n"
}else{
ans += `${list.shift(x)}\n`
}
break;
case 'size':
ans+= `${list.length}\n`
break;
case 'empty':
if (list.length === 0){
ans += "1\n"
}else{
ans += "0\n"
}
break;
case 'front':
if (list.length === 0){
ans += "-1\n"
}else{
ans += `${list[0]}\n`
}
break;
case 'back':
if (list.length === 0){
ans += '-1\n'
}else{
ans += `${list[list.length-1]}\n`
}
break;
}
};
x.forEach( (el, i) =>
{
calc(el.split(' '), lis);
}
);
console.log(ans);
push
, pop
, size
, empty
, front
, back
)에 대한 동작을 수행해야 한다.push
, pop
연산을 처리.switch
문을 통해 적절한 동작을 수행하도록 calc
함수를 작성.console.log()
로 출력하는 대신, 결과를 문자열에 누적하여 한 번에 출력.empty
, size
, front
, back
명령에 대해 큐가 비어있는 경우를 별도로 처리하여 조건에 맞는 값을 출력.calc
함수: 각 명령어를 받아 적절한 동작을 수행하고, 결과를 ans
문자열에 누적.x.forEach
: 입력 명령어를 순차적으로 받아 calc
함수를 호출.console.log()
를 호출하는 것보다 결과를 누적 출력하는 것이 효율적이다.shift
연산은 느릴 수 있으므로 실제 프로덕션 코드에서는 효율적으로 처리할 수 있는 자료 구조를 고려해야 한다.