pathas 2022. 3. 27. 00:58

문제

https://programmers.co.kr/learn/courses/30/lessons/12909

 

코딩테스트 연습 - 올바른 괄호

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은

programmers.co.kr

 


코드

function solution(s){
    var count = 0;
    
    for(var char of s){
        if(char === '(') {
            count += 1;
        } else {
            if (count === 0) return false;
            count -= 1;
        }
    }
    
    return count === 0;
}

설명

위의 코드는 count 변수를 선언해서 풀었지만, 이 문제는 스택을 활용하여 풀 수 있는 문제이다.

count 를 하나의 빈 배열이라고 생각하고 '(' 가 나오면 해당 문자열을 배열에 넣어주었다가

')' 가 나오면 이미 들어가 있던 '(' 를 pop 하는 식으로 풀이했다.

여기서 한 가지 신경 써야하는 점은 스택의 첫 번째 요소로 ')' 가 들어오면 어차피 올바르지 않은 문자열이 되기 때문에

스택의 length 가 0 일 때, 즉 count 의 값이 0 일 때 바로 false 를 리턴해주어야 한다는 것이다.