🔑 알고리즘/백준 JS

[백준] node.js/ 10866 덱

Tamii 2021. 10. 18. 09:30
반응형

내 풀이

const fs = require('fs');

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

input.shift();

let queue = [];

const cmdObj = {
  push_back: (x) => {
    queue.push(x);
    return '';
  },
  push_front: (x) => {
    queue.unshift(x);
    return '';
  },
  pop_front: () => queue.shift() || -1,
  pop_back: () => queue.pop() || -1,
  size: () => queue.length,
  empty: () => (queue[0] ? 0 : 1),
  front: () => queue[0] || -1,
  back: () => queue[queue.length - 1] || -1,
};

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

console.log(result);

스택 풀이와 비슷한 방법으로 명령객체를 만들었다.

다만 차이점은 push가 front 와 back으로 나뉘었기 때문에 reduce 시 삼항연산자가 중첩되었다는점...