괄호 변환

LJM·2023년 8월 16일
0

programmers

목록 보기
62/92

문제에서 제시한 대로 구현해서 풀었다.
근데 중간에 StringBuilder 의 함수를 몰라서 찾아서 했다. 실전에서는 떠올릴수 잇어야 한다

import java.util.*;

class Solution {
    public String solution(String p) {
        
        
        String answer = recur(p);
        return answer;
    }
    
    public String recur(String w)
    {
        if(w.isEmpty())
            return "";
        
        StringBuilder u = new StringBuilder();
        int bal = 0;
        boolean isCorrect = true;
        int vidx = 0;
        for(int i = 0; i < w.length(); ++i)
        {
            if(w.charAt(i) == '(')
            {
                u.append('(');
                bal++;
            }
            else
            {
                u.append(')');
                bal--;
            }
            
            if(bal < 0)
                isCorrect = false;
            
            if(bal == 0)
            {
                vidx = i+1;
                break;
            }
                
        }
        String v = w.substring(vidx, w.length());
        
        if(isCorrect)
        {
            u.append(recur(v));
            return u.toString();
        }
        else
        {
            StringBuilder sb = new StringBuilder();
            sb.append('(');
            sb.append(recur(v));
            sb.append(')');
            u.deleteCharAt(0);
            u.deleteCharAt(u.length()-1);
            for(int i = 0; i < u.length(); ++i)
                if(u.charAt(i) == '(')
                    sb.append(')');
                else
                    sb.append('(');
            
            return sb.toString();
        }
    }

}
profile
게임개발자 백엔드개발자

0개의 댓글