3은로그

[프로그래머스] Lv2. 괄호 회전하기 본문

코딩테스트

[프로그래머스] Lv2. 괄호 회전하기

3은 2024. 3. 17. 22:42
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

프로그래머스

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

programmers.co.kr

 

문제

 

 

 

코드

 

function solution(s) {
   let answer = 0;

    for(let i=0; i<s.length; i++) {
        let stack = [];

        for(let j=0; j<s.length; j++) {		//현재 괄호와 스택 맨 위의 괄호가 일치하면 pop
            if(s[j] == ')' && stack[stack.length-1] == '(' 
               || s[j] == ']' && stack[stack.length-1] == '[' 
               || s[j] == '}' && stack[stack.length-1] == '{') {
                stack.pop();
            } else {				//괄호가 일치하지 않으면 push
                stack.push(s[j]);
            }
        }
        
        if(stack.length == 0) {	//스택의 길이가 0이면 괄호의 짝이 다 맞는다는 의미이기 때문에 answer을 하나 더해준다
            answer += 1;
        }

        s = s.slice(1) + s[0];	//문자열을 왼쪽으로 이동
    }

    return answer;
}