Programing/Algorithm

[LeetCode] 22. Generate Parentheses

Napoliano 2025. 2. 10. 13:36
728x90

 

 

 

https://leetcode.com/problems/generate-parentheses/description/

 

public class Solution
{
    public IList<string> GenerateParenthesis(int n)
    {
        var answer = new List<string>();

        Func(answer, "", "(", 0, 0, n);

        return answer;
    }

    private void Func(IList<string> answer, string current, string piece, int leftCount, int rightCount, int n)
    {
        if (piece == "(")
            ++leftCount;
        else
            ++rightCount;

        if ((leftCount > n) || (rightCount > n) || (leftCount < rightCount))
            return;

        current = current + piece;

        if ((leftCount == rightCount) && (leftCount + rightCount == n * 2))
        {
            answer.Add(current);
            return;
        }

        Func(answer, current, "(", leftCount, rightCount, n);
        Func(answer, current, ")", leftCount, rightCount, n);
    }
}

 

 

 

728x90