올바른 괄호(스택)

나의 풀이

function solution(str) {
    let answer;
    let stack = [];
    if(str.length % 2 === 1) return "NO";
    for(let i = 0; i < str.length; i++) {
        if(str[i] === '(') stack.push(str[i]);
        else stack.pop();
    }
    if(stack.length === 0) answer = "Yes";
    else answer = "NO";
    return answer;
}
let a="(()(()))(()";
console.log(solution(a));

다른 풀이

function solution(str) {
    let answer = "Yes";
    let stack = [];
    for(let x of str) {
        if(x === '(') stack.push(x);
        else {
            if(stack.length === 0) return "NO"; // )로 시작할 경우 NO!
            stack.pop();
        }
    }
    if(stack.length > 0) return "NO"; // for문 다 돌았는데 (가 남아있을 경우 NO!
    return answer;
}
let a="(()(()))(()";
console.log(solution(a));

좋은 웹페이지 즐겨찾기