본문 바로가기
알고리즘/알고리즘 문제풀이

프로그래머스 - 괄호 회전하기 문제풀이

by sh119 2025. 4. 1.

문제

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

 

풀이

import java.util.*;
class Solution {
    public int solution(String s) {
        int answer = 0;
        
        StringBuilder sb = new StringBuilder(s);
        for(int i=0; i<s.length(); i++){
            if(isValid(sb.toString())){
            	answer++;
            {
            
            sb.append(sb.charAt(0));
            sb.deleteCharAt(0);
        }
        
        return answer;
    }
    
    public boolean isValid(String s){
        Stack<Character> stack = new Stack<>();
        
        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(c == '[' || c == '{' || c == '('){
                stack.add(c);
            }
            else if(stack.isEmpty()){
                return false;
            }
            else{
                char temp = stack.pop();
                if(!((c == ']' && temp == '[') || (c == '}' && temp == '{') ||(c == ')' && temp == '('))){
                    return false;
                }
            }
        }
       
        return stack.isEmpty();
    }
}