📝문제 설명

 


📢입출력 예시

 


✏️문제 풀이

import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;

        for (int a = 0; a < s.length(); a++) {
            String rotated = s.substring(a) + s.substring(0, a);
            if (isValid(rotated)) {
                answer++;
            }
        }
        
        return answer;
    }

    private boolean isValid(String s) {
        Deque<Character> stack = new ArrayDeque<>();
        
        for (char c : s.toCharArray()) {
            if (c == '(' || c == '{' || c == '[') {
                stack.push(c);
            } else {
                if (stack.isEmpty()){
                  return false;  
                }
                char top = stack.pop();
                
                if ((top == '(' && c != ')') || 
                    (top == '{' && c != '}') || 
                    (top == '[' && c != ']')) {
                    return false;
                }
            }
        }
        
        return stack.isEmpty();
    }
}

 

괄호 짝 맞추는 문제에 문자열 회전 조건만 추가된 문제이다.


💡새로 알게된 점

 

문자열 자르기 함수를 사용할 줄 몰라 아는 대로 Deque를 써서 회전시키려고 했지만 어디선가 계속 문제가 발생하여

그냥 substring을 배우고 문제를 풀었습니다.