본문 바로가기
알고리즘

[자바스크립트/알고리즘] 스택 - 괄호 검사

by 프론트엔드 지식백과 2021. 5. 11.

괄호가 올바른 쌍이면 "YES", 그렇지 않으면 "NO"를 출력합니다.

예를 들어 ((()))()는 쌍이 올바르지만, ((())은 올바르지 않습니다.

 

const check = (str) => {
            let stack = [], cnt = 0;
            for(let x of str){
                if(x === '('){
                    stack.push(x);
                    cnt++;
                }
                else {
                    stack.pop();
                    cnt--;
                }
            }
            if(cnt) return 'NO';
            return 'YES';
        }

 

스택을 이용한 간단한 알고리즘이다.

'(' 차례에는 stack에 push를 해주고 cnt를 증가시킨다.

')'의 경우에는 pop을 해주고 cnt를 감소시킨다.

 

cnt가 0이 아닐경우에는 짝이 맞지않아서 스택에 '(' 또는 ')'가 한개 이상 있다는 것이다. => 'NO'를 반환한다.

그 나머지 경우에는 'YES'를 반환한다.

728x90