본문 바로가기
코딩테스트(알고리즘)/baekjoon

[baekjoon] 10828 스택 (Javascript)

by Cafe Mocha 2022. 6. 30.

10828번: 스택 (acmicpc.net)

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net


접근 : 스택, 구현

 

Javascript를 활용해서 스택을 함수형으로 구현하는 연습

 

Javascript

let input = require("fs")
  .readFileSync("input.txt") //"/dev/stdin"
  .toString()
  .split("\n")
  .map((val) => val.trim());

let stack = [];
let answer = [];

function solution() {
  let n = +input.shift();

  for (let i = 0; i < n; i++) {
    let cmd = input.shift().split(" ");

    switch (cmd[0]) {
      case "push":
        stackPush(+cmd[1]);
        break;
      case "pop":
        stackPop();
        break;
      case "size":
        stackSize();
        break;
      case "empty":
        stackEmpty();
        break;
      default:
        stackTop();
        break;
    }
  }
  console.log(answer.join("\n"));
}

function stackPush(num) {
  stack.push(num);
}

function stackPop() {
  if (stack.length === 0) answer.push(-1);
  else {
    let num = stack.pop();
    answer.push(num);
  }
}

function stackSize() {
  answer.push(stack.length);
}

function stackEmpty() {
  if (stack.length === 0) {
    answer.push(1);
  } else {
    answer.push(0);
  }
}

function stackTop() {
  if (stack.length === 0) answer.push(-1);
  else {
    let num = stack[stack.length - 1];
    answer.push(num);
  }
}

solution();