N

(프로그래머스 JS)괄호 회전하기 본문

프로그래머스 알고리즘/2단계

(프로그래머스 JS)괄호 회전하기

naeunchan 2021. 5. 12. 11:03
728x90
반응형

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

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

 

스택 알고리즘.

s를 s.length만큼 회전하면서 s가 올바른 괄호인지 확인한다.

 

바깥 for문은 s를 회전하는 반복문.

안쪽 for문은 회전한 s가 올바른 괄호인지 스택을 활용해 확인하는 반복문.

stack이 비어있으면 올바른 괄호,

비어있지 않으면 올바르지 않은 괄호를 나타낸다.

function solution(s) {
    let answer = 0;
    
    for(let i = 0; i < s.length; i++){
        const stack = [];
        
        for(let j = 0; j < s.length; j++){
            if(stack.length !== 0){
                if((s[j] === ']' && stack[stack.length - 1] === '[') || (s[j] === '}' && stack[stack.length - 1] === '{') || (s[j] === ')' && stack[stack.length - 1] === '(')){
                    stack.pop();
                }
                else{
                    stack.push(s[j]);
                }
            }
            else{
                stack.push(s[j]);
            }
        }
        
        if(stack.length === 0){
            answer++;
        }
        
        s = s.slice(1) + s[0];
    }
    
    return answer;
}
728x90
반응형