https://leetcode.com/problems/generate-parentheses/
n개의 괄호 쌍이 주어질 때 모든 valid한 괄호 조합 반환
열린 괄호 수와 닫힌 괄호 수를 기반으로 valid한 조합 만들기 (재귀)
초기에 (로 열리는건 고정이라 시작을 (이랑 opened 1로 함
public class Solution {
List<string> result = new List<string>();
int maxLen;
public IList<string> GenerateParenthesis(int n) {
maxLen = n;
Generate("(", 1, 0); // 현재 괄호, 열린 괄호 개수, 닫힌 괄호 개수
return result;
}
private void Generate(string currentParenthesis, int opened, int closed)
{
if(opened == closed && opened == maxLen)
{
result.Add(currentParenthesis);
return;
}
if(opened < maxLen)
Generate(currentParenthesis + "(", opened + 1, closed);
if(closed < opened)
Generate(currentParenthesis + ")", opened, closed + 1);
}
}
시간 큰 의미 없어 보임..