문제
https://programmers.co.kr/learn/courses/30/lessons/60058
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를
programmers.co.kr
문제 풀이
문제에 제시된 변환 알고리즘을 하나씩 구현하다 보면 됨
소스 코드
class Solution {
public static String solution(String p) {
String u = "", v = "";
int a = 0, b = 0;
String[] arr = p.split("");
if(p.equals(""))
return "";
for(String s: arr) {
if(s.equals("("))
a++;
else
b++;
u += s;
if(a == b) {
if(a+b == arr.length)
break;
//a+b 부터 arr.length-1 까지
for(int i = a+b; i < arr.length; i++)
v += arr[i];
break;
}
}
System.out.println("u: " + u);
System.out.println("v: " + v);
String[] us = u.split("");
String[] vs = v.split("");
//u가 올바른 괄호일 경우
if(us[0].equals("(") && us[us.length-1].equals(")")) {
if(v.equals(""))
return u;
else
return u + solution(v);
}
else { //u가 올바르지 않은 괄호일 경우
String reverse_u = "";
for(int i = 1; i < us.length-1; i++){
if(us[i].equals("("))
reverse_u += ")";
else
reverse_u += "(";
}
return "(" + solution(v) + ")" + reverse_u;
}
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 키패드 누르기(2020카카오 인턴십) 자바 (0) | 2021.11.25 |
---|---|
[프로그래머스] 네트워크 자바 (0) | 2021.11.19 |
[프로그래머스] 타겟 넘버 자바 (0) | 2021.11.18 |
[프로그래머스] 크레인 인형뽑기 게임 자바 (0) | 2021.11.07 |
[프로그래머스] 프린터 자바 (0) | 2021.10.26 |