λ¬Έμ
νμ΄ κ³Όμ
μ£Όμ΄μ§ κ΄νΈμμ κ°μμ λ§λ μ¬λ°λ₯Έ κ΄νΈ λ°°μΉλ₯Ό μμ±νλ λ°±νΈλνΉ
λ¬Έμ μ
λλ€.
μ΄λ ν΄λΉ κ΄νΈλ°°μΉκ° μ¬λ°λ₯΄κ² μν΄μλ μ λμ κ΄νΈκ° κ°κ° (
μ )
μ¬μΌ νλ€λ μ μ μ μνλλ‘ ν©λλ€.
λν κ΄νΈμμ΄ μ¬λ°λ₯΄κΈ° μν΄μλ (
κ° μ‘΄μ¬νμ§ μλ¦λ° )
κ° (
λ³΄λ€ λ¨Όμ ν λΉλλ©΄ μλ©λλ€.
λ°λΌμ κ°κ°μ μ¬κ· νΈμΆλ§λ€ (
μ μ¬μ λΆμ΄ μλ€λ©΄ )
λ₯Ό μλν΄λ³΄λ λ°©μμΌλ‘ μ§ννμμ΅λλ€.
λ€λ§ (
λν μ΅λ n
λ² λ§νΌλ§ λ±μ₯ν μ μμΌλ―λ‘ left
μ leftCount
λ₯Ό κ°κ° ꡬλΆνμ¬
μ μλ (
μ μ¬μ λΆμΌλ‘ )
κ° λ±μ₯ν λλ§λ€ κ°μμμΌμ€¬κ³ , νμλ νμ¬κΉμ§ μ νλ (
μ κ°μλ₯Ό λνλ΄λλ‘ νμμ΅λλ€.
μ½λ
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function (n) {
const answer = [];
function dfs(parentheses, left, leftSelected, depth) {
if (depth === 2 * n - 1) {
answer.push(parentheses + ")");
return;
}
// λ§μ½ μΌμͺ½ κ΄νΈκ° μ‘΄μ¬νλ€λ©΄
if (left) {
dfs(parentheses + ")", left - 1, leftSelected, depth + 1);
}
// μΌμͺ½ κ΄νΈ μ¬μ λΆμ΄ μλ€λ©΄
if (leftSelected < n) {
dfs(parentheses + "(", left + 1, leftSelected + 1, depth + 1);
}
}
dfs("(", 1, 1, 1);
return answer;
};
'π algorithm > leetcode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LeetCode 230 - Kth Smallest Element in a BST (Medium) (0) | 2021.03.02 |
---|---|
LeetCode 198 - House Robber (Easy) (0) | 2021.03.02 |
LeetCode 62 - Unique Paths (Medium) (0) | 2021.03.02 |
LeetCode 121 - Best Time to Buy and Sell Stock (Easy) (0) | 2021.03.02 |
LeetCode 101 - Symmetric Tree (Easy) (0) | 2021.03.02 |
π¬ λκΈ