[javascript] 백준 4949번 균형잡힌 세상

bjyyyyy·2022년 11월 9일
0

문제보기

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

let result = [];
for (let i = 0; i < input.length - 1; i++) {
    const word = input[i];
    let filtered = [];
    for (let j = 0; j < word.length; j++) {
        if (
            word[j] === "(" ||
            word[j] === ")" ||
            word[j] === "[" ||
            word[j] === "]"
        ) {
            filtered.push(word[j]);
        }
    }
    let stack = [];
    let checkNo = false;
    for (let k = 0; k < filtered.length; k++) {
        if (filtered[k] === "(" || filtered[k] === "[") {
            stack.push(filtered[k]);
        } else if (filtered[k] === ")" || filtered[k] === "]") {
            let check = stack.pop() + filtered[k];
            if (check === "()" || check === "[]") {
                continue;
            } else {
                result.push("no");
                checkNo = true;
                break;
            }
        }
    }
    if (!checkNo) {
        if (stack.length === 0) {
            result.push("yes");
        } else {
            result.push("no");
        }
    }
}
console.log(result.join("\n"));

스택 자료구조를 사용하면 쉽게 풀수있다.
다만 내부 반복문 종료시 stack에 값에 있을수 있으므로 이 부분을 boolean으로 체크해서 처리해주는게 중요하다

0개의 댓글