Algorithm/Programmers

[Lv.2] 괄호 회전하기 : Java

say! 2025. 9. 26. 14:48
728x90

 

 

프로그래머스

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

programmers.co.kr

import java.io.*;
import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0; // 올바른 괄호 문자열 개수
        
        
        // x칸만큼 회전시키기
        int x = s.length();
        while(x>0){
            // 올바른 괄호인지 판별하기 > 큐 사용 > 짝 맞추기
            if(isValid(s)) answer++;
            
            // 회전시키기
            s = s.substring(1) + s.charAt(0);
            x--;
        }
        
        return answer;
    }
    
    public static boolean isValid(String s){
        int i=0;
        ArrayDeque<Character> q = new ArrayDeque<>();
        
        for(char c : s.toCharArray()){
            if(c == '[' || c == '{' || c == '('){
                q.push(c);
            }
            else{
                if(q.isEmpty()) return false;
                char top = q.pop();
                if(c == ']' && top != '[') return false;
                if(c == '}' && top != '{') return false;
                if(c == ')' && top != '(') return false;
            }
        }
        
        return q.isEmpty();
    }
}