문제
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Example 1:
Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]
Example 2:
Input: n = 1
Output: ["()"]
Constraints:
1 <= n <= 8
풀이
dp를 이용해서 전에 썼던 배열에 추가하기.
우선 dp 배열을 []로 초기화 하자
그리고 dp[0]에 빈 문자열 "" 추가
let dp = new Array(n + 1).fill(0).map(() => []);
dp[0].push("");
그런 다음 n-1 들의 조합에 ()를 더해주자.
ex) n =4
dp[0] 와 dp[3]
dp[1] 와 dp[2]
dp[2] 와 dp[1]
dp[3] 와 dp[0]
의 조합
답안
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function (n) {
// dp 배열 []로 초기화
let dp = new Array(n + 1).fill(0).map(() => []);
// dp[0] 첫 배열에 빈 문자열 "" 추가
dp[0].push("");
for (let i = 1; i <= n; i++) {
for (let p = 0; p < i; p++) {
let q = i - 1 - p;
for (let left of dp[p]) {
for (let right of dp[q]) {
dp[i].push(`(${left})${right}`);
}
}
}
}
return dp[n];
};
'JavaScript > Leetcode' 카테고리의 다른 글
N-Queens II (1) | 2024.10.24 |
---|---|
132 Pattern (Medium) (0) | 2024.10.23 |
Trapping Rain Water (Hard) (5) | 2024.10.23 |
Group Anagrams (Medium) (1) | 2024.09.28 |
Container With Most Water (Medium) (0) | 2024.09.27 |