๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ JS

[๋ฐฑ์ค€] node.js/ 10828 ์Šคํƒ

by Tamii 2021. 10. 15.
๋ฐ˜์‘ํ˜•

์ฒ˜์Œ ํ’€์ด(์‹œ๊ฐ„์ดˆ๊ณผ)

const fs = require('fs');

let input = (fs.readFileSync('./test') + '').toString().trim().split('\n');

input.shift();

let stack = [];

input.map((cmd) => {
  const cmdArr = cmd.split(' ');
  const command = cmdArr[0];

  switch (command) {
    case 'push':
      const number = cmdArr[1];
      stack.push(parseInt(number));
      break;
    case 'top':
      if (stack.length === 0) console.log(-1);
      else console.log(stack[stack.length - 1]);

      break;
    case 'pop':
      if (stack.length === 0) console.log(-1);
      else console.log(stack.pop());
      break;
    case 'size':
      console.log(stack.length);
      break;
    case 'empty':
      if (stack.length === 0) console.log(1);
      else console.log(0);
  }
});

๊ฐ๊ฐ์˜ ๋ช…๋ น์–ด์—์„œ ๋นผ๊ณ  ๋”ํ•˜๊ณ  ๋‚œ๋ฆฌ๋ฅผ ํ•œ๋‹ค.. ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„์ดˆ๊ณผ... 

 

 

๋‹ค๋ฅธ ํ’€์ด

๐Ÿ”— ์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ

const fs = require('fs');
const { isModuleNamespaceObject } = require('util/types');

let input = (fs.readFileSync('./test') + '').toString().trim().split('\n');

input.shift();

let stack = [];

const cmdObj = {
  pop: () => stack.pop() || -1,
  size: () => stack.length,
  empty: () => (stack[0] ? 0 : 1),
  top: () => stack[stack.length - 1] || -1,
  push: (item) => {
    stack.push(item.split(' ')[1]);
    return '';
  },
};

const result = input.reduce(
  (acc, v) => acc + (cmdObj[v] ? `${cmdObj[v]()}\n` : cmdObj.push(v)),
  ''
);

console.log(result);

 

โœจ ๋‚˜์™€ ๋‹ค๋ฅธ์ 

1. switch๋กœํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ฒด ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌ

2. if ๋ฌธ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ  || ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ

3. ํ™”์‚ดํ‘œํ•จ์ˆ˜ ๋ฉ”์„œ๋“œ

4. reduce๋ฅผ ํ™œ์šฉํ•œ ans ์ƒ์„ฑ

5. push๊ฐ€ ์•„๋‹๊ฒฝ์šฐ ๊ตณ์ด ๊ณต๋ฐฑ์œผ๋กœ ๋‚˜๋ˆ„์ง€ ์•Š์Œ

 

 

 

 

 

๐Ÿฅณ ์ง„์งœ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์—์„œ ๋งŽ์€ ์ ์„ ๋ฐฐ์› ๋‹ค.

๋‹จ์ˆœํžˆ ๊ตฌํ˜„์ด ๋˜๋Š” ์ฝ”๋“œ์ธ๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ณด๊ธฐ ์‰ฝ๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ์ธ๊ฐ€..?

๋Œ“๊ธ€