본문 바로가기
🔑 알고리즘/백준 JS

[백준] node.js/ 10866 덱

by Tamii 2021. 10. 18.
반응형

내 풀이

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 시 삼항연산자가 중첩되었다는점...

'🔑 알고리즘 > 백준 JS' 카테고리의 다른 글

[백준] node.js/ 15649 N과 M 1  (0) 2021.10.20
[백준] node.js/ 1302 베스트셀러  (0) 2021.10.19
[백준] node.js/ 10828 스택  (0) 2021.10.15
[백준] node.js/ 3986 좋은 단어  (0) 2021.10.14
[백준] node.js/ 2164 카드2  (0) 2021.10.13

댓글