코테

[Algorithm] 괄호 회전하기 - JavaScript

뚜따따 2024. 1. 23. 20:17

프로그래머스 - 괄호 회전하기
난이도 : Level 2
정답률: 67%
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

▶ 문제

 

 

▶ 풀이

괄호가 올바른지 판단하는 카운트 함수를 만들었다. 괄호를 여는 '[' 나 '{' 나 '(' 의 경우에 stack 에 집어넣고, 닫는 괄호일 경우 stack 의 마지막값을 비교해서 괄호가 올바른지를 파악했다

function solution(s) {
    var answer = 0;
    if (s.length % 2 === 1) return 0;
    for(let i = 0; i < s.length; i++) {
        let a = s.split('');
        a[a.length] = a[0];
        a.shift();
        s = a.join('');
        if(!count(s)) {
        answer++;
    }
    }
    return answer;
}

function count(word) {
        const stack = [];
        let flag = false;
        for(let i= 0; i < word.length; i++) {
        if(word[i] === `[` || word[i] === `{` || word[i] === `(`) {
            stack.push(word[i]);
        } else {
            let leftWord = stack.pop();
        switch(word[i]) {
            case "]":
                if(leftWord !== '[') {
                    flag = true;
                }
                break;
            case "}":
                if(leftWord !== '{') {
                    flag = true;
                }
                break;
            case ")":
                if(leftWord !== '(') {
                    flag = true;
                }
                break;
        }
        }
    }
    return flag;
}