[백준] 9935번 문자열 폭발

2021년 06월 14일, 23:08

문자열 폭발

문제 풀이

스택을 이용해서 푸는 문제이다.
pop을 계속한다면 느려질거 같아서 index를 두고 덮어씌우는 방식으로 했다.
그리고 마지막에는 index가 stack의 길이니까 index만큼 stack에서 slice를 해서 join을 통해 문자열을 만들었다.

소스코드

const log = console.log;
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
// const input = fs.readFileSync("./stdin").toString().trim().split("\n");

const str = input[0];
const boom = input[1];
const boomLen = boom.length;
const stack = [];
let index = 0;

const checkBoom = () => {
  if(index < boomLen) return;
  let check = true;
  let j = 1
  for(let i=boomLen-1 ; i>=0 ; i--){
    if(boom[i] === stack[index-j]){
      j++;
      continue;
    }
    check = false;
    break;
  }
  return check;
}

for(let i=0 ; i<str.length ; i++){
  stack[index++] = str[i];
  if(checkBoom()){
    index -= boomLen;
    continue;
  }
}
let result = stack.slice(0, index).join("");
log(result === '' ? 'FRULA' : result);