티스토리 뷰

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/60058

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 설명

처음 문제 보고 무슨 의미인가 싶었는데 ㅋㅋ

그냥 문제에 나와있는 대로 코딩하면 된다.

딱히 알고리즘이라던가 없는 문제!

 

3. 코드

class Solution {
    public String solution(String p) {
        String answer = "";
        answer = convert(p);
        return answer;
    }
    
    String convert(String w) {
        if(w.equals("")) return "";
        
        int left = 0;
        int right = 0;
        int i;
        for(i=0; i<w.length(); i++) {
            char s = w.charAt(i);
            if(s == '(') left++;
            else         right++;
            
            if(left==right) break;
        }
        
        String u = w.substring(0, i+1);
        String v = w.substring(i+1);
        
        if(isRight(u)) {
            u += convert(v);
        }
        else {
            String emp = "(" + convert(v) + ")";
            u = u.substring(1, u.length()-1);
            u = u.replaceAll("\\(","\\/").replaceAll("\\)","\\(").replaceAll("\\/","\\)");
            emp += u;
            return emp;
        }
        return u;
    }
    // 올바른 괄호 문자열인지 확인
    boolean isRight(String u) {
        while(!u.equals("")) {
            if(u.charAt(0)==')') {
                return false;
            }
            u = u.replaceAll("\\(\\)","");
        }
        
        return true;
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday