[알고리즘] 올바른 괄호 - stack

문제

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.

(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

✏️ 입력설명
첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.

✏️ 출력설명
첫 번째 줄에 YES, NO를 출력한다.

✏️ 입력예제 1
(()(()))(()

✏️ 출력예제 1
NO


풀이

// 여는 괄호 "("와 닫는 괄호 ")"의 개수가 같으면 올바른 괄호
function solution(s){
    let sw = 0;			// switch 변수 sw 
    for(let i in s){
        if(s[i] ==="(") sw = sw+1;	// 여는 괄호는 sw+1
        else  sw -= 1;			// 닫는 괄호는 sw-1
    console.log(i,"번 째 문자열 :",s[i],", sw의 값 : ",sw);
    }
    console.log("================================");
    if (sw === 0) return "YES";		// switch 변수가 0이면 올바른 괄호
    else return "NO";
}
            
let a="(()(()))(()";
console.log(solution(a));


✏️ 문제 출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

좋은 웹페이지 즐겨찾기