[Programmers]-괄호 회전하기

문제

문제 문제

괄호를 순환한다는 것이다. 회전해도 올바른 문자열이면 올바른 수를 반환하면 되는 문제이다.

코드

import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;
        
        for(int i=0;i<s.length();i++){
            s += s.charAt(0)+"";
            s = s.substring(1,s.length());
            answer = right(s) ? answer+1 : answer;
        }
        return answer;
    }
    public boolean right(String s){

        Stack<Character> stack = new Stack<Character>();
        
        for(int i=0;i<s.length();i++){
            char now = s.charAt(i);
            if(now=='(' || now=='{' || now=='[') stack.push(now);
            else{//닫는 괄호일 때
                if(stack.isEmpty()) return false;//스택이 비어있을 때
                else{//스택이 비어있지 않을 때
                    char value = stack.pop();
                    if(value=='{'&&now=='}'|| 
                    value=='['&&now==']'|| 
                    value=='('&&now==')') continue;
                    else return false;
                }
            }
        }
        return stack.isEmpty() ? true : false;//여는 괄호가 남아있을 경우
    }
}

코드 설명

스택을 이용하여 풀었다. 여는 괄호는 무조건 스택에 넣어주고 닫는 괄호일 때 주석 조건에 자세히 달았다.

요약

  • 42서울에 가야하나..
  • 괄호에는 스택을 써주면 편하다.