728x90
반응형
1. 문제
programmers.co.kr/learn/courses/30/lessons/60058?language=java
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴
programmers.co.kr
2. 풀이
- 고민 시간이 많이 들었다.
- 차근차근 규칙에 따라 풀 수 있었다
3. 코드
class Solution {
public String solution(String p) {
String answer = "";
if(p.length()==0) return "";
int div = divide(p);
String u = p.substring(0,div);
String v = p.substring(div);
if(isTrue(u)){
answer += (u+solution(v));
}else{
String str = "("+solution(v)+")";
u = u.substring(1,u.length()-1);
answer += str+addition(u);
}
return answer;
}
static String addition(String v){
StringBuilder sb = new StringBuilder();
for(int i =0 ;i<v.length(); i++){
if(v.charAt(i)==')'){
sb.append("(");
}else sb.append(")");
}
return sb.toString();
}
static boolean isTrue(String u){
int cnt=0;
for(int i =0; i<u.length(); i++){
if(u.charAt(i)=='(') cnt++;
else cnt--;
if(cnt<0) return false;
}
return true;
}
static int divide(String p){
int p1=0;
int p2=0;
for(int i =0; i<p.length(); i++){
if(p.charAt(i)=='('){
p1++;
}else p2++;
if(p1==p2) return i+1;
}
return 0;
}
}
반응형
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 Lv2] 문자열 압축(Java) (0) | 2024.03.04 |
|---|---|
| [프로그래머스 Lv2] 더 맵게(Java) (0) | 2021.01.08 |
| [프로그래머스 Lv2] 가장 큰 수(Java) (0) | 2021.01.07 |
| [프로그래머스 Lv2] 주식가격(Java) (0) | 2021.01.06 |
| [프로그래머스 Lv2] 삼각 달팽이(Java) (0) | 2021.01.06 |