[Leetcode] 22. Generate Parentheses
#조합
Problem
숫자 n이 주어질때, 괄호 (,)를 n개의 쌍이맞는 올바른 괄호가 될 수 있는 경우를 모두 만들어라.
Solution
- 재귀함수를 이용한 방법
- 주어진 N보다 열린괄호가 적으면 열린괄호를 추가하는 함수 호출과 열린괄호보다 닫힌괄호의 수가 적으면 닫힌괄호를 추가하는 로직을 수행
- 재귀함수가 깊어질때 N보다 열린괄호와 닫힌괄호의 수가 커지지 않도록 조건 처리
- 열린괄호와 닫힌괄호와 N의 값이 같을때 현재 상태의 문자열을 저장한다.
JS CODE
javascript
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function (n) {
let answer = []
const combination = (openCnt, closeCnt, str) => {
if (n < openCnt || n < closeCnt) return
if (n === openCnt && n === closeCnt) {
answer.push(str)
}
if (openCnt < n) combination(openCnt + 1, closeCnt, str + '(')
if (closeCnt < openCnt) combination(openCnt, closeCnt + 1, str + ')')
}
combination(0, 0, '')
return answer
}