백트레킹을 통해 해결하기 좋은 문제이다.
특정 길이가 될 때까지 괄호를 열거나 닫는 가능한 모든 경우의 수를 탐색하여 결과 배열에 담아 반환한다.
function generateParenthesis(n: number): string[] {
const result = []
function backTracking(curStr: string, open: number, close: number) {
if(curStr.length === 2 * n) {
result.push(curStr)
return
}
if(open < n) {
backTracking(curStr + '(', open + 1, close)
}
if(close < open) {
backTracking(curStr + ')', open, close + 1)
}
}
backTracking('', 0, 0)
return result
};