🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/💛 백준

[백준/4. 선형자료구조(스택)] 9012번. 괄호 (JavaScript)

안오늘 2021. 7. 20. 16:34

문제

https://www.acmicpc.net/problem/9012

 

풀이

// 백준 입출력을 위한 코드
// const readline = require("readline");
// const rl = readline.createInterface({
//     input: process.stdin,
//     output: process.stdout,
// });

// let input = [];
// rl.on("line", function (line) { //여러줄 입력 
//     input.push(line)
//     //rl.close()가 없어서 계속입력 
//     //로컬에서 입력을 중지할려면 입력을 한 후 'ctrl + D'을 통해 입력 종료 
// }).on("close", function () {
//     // 이런식으로 적절하게 입력값을 처리해줘야한다. 
//     let T = parseInt(input.shift());
//     for (let i = 0; i < T; i++) {
//         console.log(isValidPS(input[i]));
//     }
//     //프로세스 종료 
//     process.exit();
// });

let input = [
    '6',
    '(())())',
    '(((()())()',
    '(()())((()))',
    '((()()(()))(((())))()',
    '()()()()(()()())()',
    '(()((())()('
];

// let input = [
//     '3',
//     '((',
//     '))',
//     '())(()'
// ]

function isValidPS(sentence) {
    let data = sentence.split('');
    let stack = [];
    // console.log(data);
    if (data.length % 2 !== 0) {
        return 'NO';
    }
    for (let i = 0; i < data.length; i++) {
        if (data[i] == '(') {
            stack.push('(');
        }
        else if (data[i] == ')') {
            if (stack.length != 0) {
                stack.pop();
            } else {
                return 'NO';
            }
        }
    }
    if (stack.length !== 0) {
        return 'NO';
    }
    return 'YES';
}

const T = parseInt(input.shift(), 10);
for (let i = 0; i < T; i++) {
    console.log(isValidPS(input[i]));
}

경우를 잘 고려해줘야 한다 !!