괄호의 개수를 정해주고 만들 수 있는 괄호를 출력합니다.
여는 괄호와 닫는 괄호의 개수를 비교하며 조건에 맞게 재귀를 돌렸습니다.
닫는 괄호의 개수가 n과 같아지면 완성된 문자열이므로 답에 추가했습니다.
import java.util.*;
class Solution {
List<String> answer = new ArrayList<>();
public List<String> generateParenthesis(int n) {
recursive(n, "", 0, 0);
return answer;
}
public void recursive(int n, String s, int open, int end) {
if(end == n) {
answer.add(s);
return;
}
if(open == 0 || open == end) {
recursive(n, s + "(", open + 1, end);
}
if(open > end) {
if(open < n) {
recursive(n, s + "(", open + 1, end);
}
recursive(n, s + ")", open, end + 1);
}
}
}