모든 쌍을 다 찾아야 하므로, dfs를 진행했다. 여는괄호, 닫는 괄호가 둘다 0이 되었을 때, 배열에 푸쉬를 해주었고, 오른쪽 괄호의 개수가 더 작다면 무조건 리턴조건, 왼쪽 괄호의 개수가 0보다 작다면 무조건 리턴 조건에 포함된다. 따라서 풀이는 아래와 같다.
const generateParenthesis = function(n) {
let res = [];
const dfs = (str, left, right) => {
if(left === 0 && right === 0) {
res.push(str);
return;
}
if(right < left || left < 0) return
dfs(str+"(", left - 1, right)
dfs(str+")", left, right - 1)
}
dfs("", n, n)
return res
};
'알고리즘 > 리트코드' 카테고리의 다른 글
139. Word Break (0) | 2022.05.08 |
---|---|
54. Spiral Matrix (0) | 2022.04.30 |
33. Search in Rotated Sorted Array (0) | 2022.04.15 |
289. Game of Life (0) | 2022.04.13 |
704. Binary Search (0) | 2022.04.13 |