kakasoo

[node.js] 균형잡힌 세상 ( 백준 4949번 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 균형잡힌 세상 ( 백준 4949번 )

카카수(kakasoo) 2021. 3. 30. 11:05
반응형

처음에는 대괄호, 소괄호를 따로 따로 배열을 만들어서 관리해 주었는데, 예외가 있었다.
[(]) 형태로 들어올 때 제대로 동작하지 않았다.
그래서 배열을 하나로 합쳐줬더니 해결되었다.

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

rl.on("line", (line) => {
    if (line === ".") {
        rl.close();
    }
    main(line);
}).on("close", () => {
    process.exit();
});

/**
 *
 * @param {string} line
 */
const main = (line) => {
    const bracket = line
        .split("")
        .filter((el) => el === "(" || el === ")" || el === "[" || el === "]");

    const big = [];

    if (bracket.length % 2 !== 0) {
        console.log("no");
        return;
    }

    // console.log(bracket);

    for (let i = 0; i < bracket.length; i++) {
        const cur = bracket[i];
        if (cur === "[") {
            big.push(cur);
            // console.log("big : ", big);
        }
        if (cur === "]") {
            if (big[big.length - 1] === "[") {
                big.pop();
                // console.log("big : ", big);
            } else {
                big.push(cur);
                // console.log("big : ", big);
            }
        }
        if (cur === "(") {
            big.push(cur);
            // console.log("big : ", big);
        }
        if (cur === ")") {
            if (big[big.length - 1] === "(") {
                big.pop();
                // console.log("big : ", big);
            } else {
                big.push(cur);
                // console.log("big : ", big);
            }
        }
    }

    if (!big.length && !big.length) {
        console.log("yes");
    } else {
        console.log("no");
    }
};
반응형