문제
https://programmers.co.kr/learn/courses/30/lessons/60058
문제 풀이
문제에 제시된 변환 알고리즘을 하나씩 구현하다 보면 됨
소스 코드
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 |