정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
push X: 정수 X를 스택에 넣는 연산이다.
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 스택에 들어있는 정수의 개수를 출력한다.
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
const readLine = require("readline")
const rl = readLine.createInterface({
input: process.stdin,
output: process.stdout,
})
const stackArr = []
const output = []
const push = x => {
stackArr.push(Number(x))
}
const pop = () => {
const num = stackArr.pop()
if (num) {
output.push(num)
} else {
output.push(-1)
}
}
const size = () => {
output.push(stackArr.length)
}
const empty = () => {
output.push(stackArr.length === 0 ? 1 : 0)
}
const top = () => {
output.push(
stackArr[stackArr.length - 1] ? stackArr[stackArr.length - 1] : -1
)
}
let lineCount = 0
let isFirstLine = true
rl.on("line", line => {
if (isFirstLine) {
lineCount = Number(line)
isFirstLine = false
} else {
const [cmd, value] = line.split(" ")
const fn = {
push,
pop,
size,
empty,
top,
}
if (fn[cmd]) {
fn[cmd](value)
}
lineCount -= 1
if (lineCount === 0) {
console.log(output.join("\n"))
process.exit(0)
}
}
}).on("close", () => process.exit(0))