느려도 한걸음씩

문제 16 - 괄호 회전하기(스택) 본문

알고리즘/코테대비 100문제

문제 16 - 괄호 회전하기(스택)

hoj0806 2025. 2. 15. 12:29

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제

 

내 정답 코드

function solution(s) {
    let answer = 0 
    let arr = [...s]
    let stack = []
    for(let i = 0; i < s.length; i++) {
        arr.push(arr.shift())
        for(let j = 0; j < arr.length; j++) {
            let c = arr[j]
            if(c === '[' || c === '(' || c === '{') {
                stack.push(c)
            } else if(c === ']' || c === ')' || c === '}') {
                if(stack.length === 0) {
                   stack.push(false)
                } else {
                    if(c === ']') {
                       if(stack[stack.length - 1] === '[') {
                          stack.pop()
                        }
                   } else if(c === ')') {
                       if(stack[stack.length - 1] === '(') {
                          stack.pop()
                        }
                      } else if(c === '}') {
                        if(stack[stack.length - 1] === '{') {
                         stack.pop()
                      }
                   }
                }
            }
        }
        if(stack.length === 0) answer+=1
        stack = []
    }
    return answer
}