[백준/node.js] 10828번 스택

2023. 8. 7. 09:18Trip to Cote

 

js를 공부했다면 스택은 모르기 힘든 개념이다. 자신있게 풀었지만 시간초과와 문자열 정리를 잘못해 정답을 보고 풀었다.

 

1. 그냥 문자열을 뽑았더니 \r이 붙어 나왔는데 그냥 문자열만 ===처리하면 같다 처리가 안나왔다.

2. 콘솔을 그냥 케이스마다 찍었는데 그러다보니 계속 시간초과가 떴다. 그래서 배열에 저장에 나중에 콘솔을 한 번만 찍었다. 

 

const fs = require("fs");
const input = fs
  .readFileSync("/dev/stdin")
  .toString()
  .replace(/\r/g, "")
  .trim()
  .split("\n");
const stack = [];
const answer = [];

for (let i = 1; i < input.length; i++) {
  if (input[i] === "top") {
    if (stack.length === 0) {
      answer.push(-1);
    } else answer.push(stack[stack.length - 1]);
  } else if (input[i] === "size") {
    answer.push(stack.length);
  } else if (input[i] === "empty") {
    if (stack.length === 0) {
      answer.push(1);
    } else {
      answer.push(0);
    }
  } else if (input[i] === "pop") {
    if (stack.length === 0) {
      answer.push(-1);
    } else {
      answer.push(stack.pop());
    }
  } else stack.push(input[i].substring(5));
}

console.log(answer.join("\n"));