🖇️ 문제 링크
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다.


📝 문제 분석

문제에서 제시하는 순서대로 정확히 구현하기
⌨️ 코드
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