프로그래머스 Lv2: 괄호 회전하기

Steve·2021년 11월 13일
0

https://programmers.co.kr/learn/courses/30/lessons/76502?language=javascript

괄호 문제 -> 스택 사용

거의 공식이라 스택을 사용해서 푸는 것 까진 성공했는데 다른 사람의 풀이를 보니 내꺼보다 훨씬 간단해서 배울게 많았던 문제였다.

괄호를 닫을 때는 무조건 같은 종류여야만 한다. 그게 아니면 틀린 문자열.

function solution(s) {
    var answer = 0;
    for (let x = 0; x < s.length; x++){
        // 앞에껄 뒤로 붙일 때 slice 를 써서 간단하게 해결한다.
        let rotated = s.slice(x) + s.slice(0, x);
        let stack = []
        for (let i = 0; i < rotated.length; i++) 
        {
            // TIP) 꺼낸 괄호와 스택의 맨 위에 있는 괄호가 같은 종류면 
            // 맨 위의 괄호를 stack 에서 pop 한다.
            let top = stack[stack.length - 1] || null;
            let char = rotated[i];
            if (top === '(' && char === ')') stack.pop();
            else if (top === '[' && char === ']') stack.pop();
            else if (top === '{' && char === '}') stack.pop();
            else stack.push(char); // stack 이 비었을 경우 그냥 push.
        }
        if (!stack.length) answer++;
    }
    return answer;
}
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글