프로그래머스 코딩테스트 연습/Level2

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

긷뚜 2021. 5. 6. 12:39
728x90

programmers.co.kr/learn/courses/30/lessons/76502

 

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

 

programmers.co.kr

기존에 존재하던 많은 올바른 괄호만들기 문제를 응용하는 문제였다

거기에 문자열 회전만 추가하는 문제로 문자열 회전은 앞의 문자를 하나 잘라내 뒤에 다시 붙혀넣는 식으로 풀었다

import java.util.Stack;
class Solution {
    public int solution(String s) {
        int answer = 0;
        for(int i =0;i<s.length();i++){
            if(test(s)){answer++;}
            s = s.substring(1,s.length()) + s.substring(0,1);
        }
        return answer;
    }
    
    public boolean test(String s){
        Stack<Character> st = new Stack<>();
        for(int i =0;i<s.length();i++){
            char ch = s.charAt(i);
            switch(ch){
                case '(' : case '{' : case '[':
                    st.push(ch);
                    break;
                case ')':
                    if(st.empty()){return false;}
                    if(st.pop() != '('){return false;}
                    break;
                case '}':
                    if(st.empty()){return false;}
                    if(st.pop() != '{'){return false;}
                    break;
                case ']':
                    if(st.empty()){return false;}
                    if(st.pop() != '['){return false;}
                    break;

            }
        }
        if(!st.empty()){return false;}
        return true;
    }
}
728x90