Stack, Queue 기본 구현 문제

Jit Hoon·2023년 8월 14일

Data structure

목록 보기
3/3
post-thumbnail

Stack

먼저 들어온 데이터가 나중에 나가는 자료구조

구현용 백준 기본 문제 : 10828번

const array = require('fs').readFileSync('/dev/stdin').toString().split('\n');
array.shift();

const stack = [];

const fun = {
  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 = array.reduce((acc, v) => 
	acc + (fun[v] ? `${fun[v]()}\n` : fun.push(v)), '');

console.log(result);

Queue

먼저 삽입된 데이터가 먼저 추출되는 자료구조

구현용 백준 기본 문제 : 10845번

const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');

const queue = [];
const answer = [];
const len = Number(input[0]);

for(let i=1; i<=len; i++){
    let cmd = input[i].split(' ');
    switch(cmd[0]) {
        case 'push':
            queue.push(cmd[1]);
            break;
        case 'pop':
            answer.push(queue.shift() || -1);
            break;
        case 'size':
            answer.push(queue.length);
            break;
        case 'empty':
            answer.push(queue[0] ? 0 : 1);
            break;
        case 'front':
            answer.push(queue[0] || -1);
            break;
        case 'back':
            answer.push(queue[queue.length-1] || -1);
            break;
    }
}

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

참고 자료

바킹독, Stack
바킹독, Queue

profile
최지훈_FE_최최최최종.log

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

글 재미있게 봤습니다.

답글 달기