Algorithm/programmers

괄호 회전하기 ( Level 2, JavaScript, 월간 코드 챌린지 시즌2 )

takeU 2021. 8. 17. 20:24
반응형

괄호 회전하기 ( Level 2 )

Programmers 월간 코드 챌린지 시즌2 ( JavaScript )

문제 링크

 

나의 풀이

function solution(s) {
    let res = 0;
    for ( let i = 0; i < s.length; i++ ) {
        const arr = [];
        let str = s.slice(i) + s.slice(0,i)
        for ( let j = 0; j < str.length; j++ ) {
            switch ( str[j] ) {
                case '(':
                case '[':
                case '{':
                    arr.push(str[j])
                    break;
                case ')':
                    arr.slice(-1)[0] === '(' ?
                        arr.pop() : arr.push(str[j])
                    break;
                case ']':
                    arr.slice(-1)[0] === '[' ?
                        arr.pop() : arr.push(str[j])
                    break;
                case '}':
                    arr.slice(-1)[0] === '{' ?
                        arr.pop() : arr.push(str[j])
                    break;
            }
        }
        if ( arr.length === 0 ) res += 1
    }
    return res
}

스택을 활용한 풀이

짝이 맞춰지면 스택에서 제거, 맞춰지지 않는다면 스택에 추가