🖇️ 문제 링크
📝 문제 분석
문제에서 제시하는 순서대로 정확히 구현하기
⌨️ 코드
import java.util.Arrays;
class Solution {
public String solution(String p) {
if(p.length() == 0) return "";
int m = isBalance(p);
String u = p.substring(0, m), v = p.substring(m);
if(isCorrect(u)) return u + solution(v);
else return "(" + solution(v) + ")" + reverse(u);
}
// 괄호 뒤집기
String reverse(String p) {
char[] c = p.substring(1, p.length() - 1).toCharArray();
for(int i = 0; i < c.length; i++)
c[i] = (c[i] == '(') ? ')' : '(';
return new String(c);
}
// 균형잡힌 괄호 문자열 리턴
int isBalance(String p) {
int i = 0, cnt = 0;
for(; i < p.length(); i++) {
if(p.charAt(i) == '(') cnt++;
else cnt--;
if(cnt == 0) break;
}
return i + 1;
}
// 올바른 괄호 문자열 여부 리턴
boolean isCorrect(String p) {
int cnt = 0;
for(int i = 0; i < p.length(); i++) {
if(p.charAt(i) == '(') cnt++;
else cnt--;
if(cnt < 0) return false;
}
return cnt == 0;
}
}
Uploaded by Notion2Tistory v1.1.0