괄호 회전하기

LJM·2023년 8월 23일
0

programmers

목록 보기
75/92

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

Stack 으로 해결하였다

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(isRight(sb.toString()))
                answer++;
            
            sb.append(sb.charAt(0));
            sb.delete(0, 1);
            //System.out.println(sb.toString());
        }
        
        return answer;
    }
    
    public boolean isRight(String s)
    {
        Stack<Character> stack = new Stack();
        for(int i = 0; i < s.length(); ++i)
        {
            char cur = s.charAt(i);
                     
            if(cur=='[')
            {
                stack.push(cur);
            }
            else if(cur==']')
            {
                if(stack.isEmpty())
                    return false;
                
                if(stack.peek() != '[')
                    return false;
                stack.pop();
            }
            else if(cur=='{')
            {
                stack.push(cur);
            }
            else if(cur=='}')
            {
                if(stack.isEmpty())
                    return false;
                
                if(stack.peek() != '{')
                    return false;
                stack.pop();
            }
            else if(cur=='(')
            {
                stack.push(cur);
            }
            else if(cur==')')
            {
                if(stack.isEmpty())
                    return false;
                
                if(stack.peek() != '(')
                    return false;
                stack.pop();
            }
            
            
        }
        if(stack.isEmpty()==false)
                return false;
        
        return true;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글