<Medium> Generate Parentheses (LeetCode : C#)

이도희·2023년 3월 29일
0

알고리즘 문제 풀이

목록 보기
44/185

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

📕 문제 설명

n개의 괄호 쌍이 주어질 때 모든 valid한 괄호 조합 반환

  • Input
    정수 n
  • Output
    valid한 괄호 조합

예제

풀이

열린 괄호 수와 닫힌 괄호 수를 기반으로 valid한 조합 만들기 (재귀)

초기에 (로 열리는건 고정이라 시작을 (이랑 opened 1로 함

  1. 열린 괄호가 최대 괄호 수 보다 작으면 열린 괄호 추가
  2. 닫힌 괄호가 열린 괄호보다 작으면 닫힌 괄호 추가
  3. 열린 괄호와 닫힌 괄호 수 같고, 열린 괄호가 최대로 사용되었으면 결과에 추가
public class Solution {
    List<string> result = new List<string>();
    int maxLen;
    
    public IList<string> GenerateParenthesis(int n) {
        maxLen = n;
        Generate("(", 1, 0); // 현재 괄호, 열린 괄호 개수, 닫힌 괄호 개수
        return result;
    }
    
    private void Generate(string currentParenthesis, int opened, int closed)
    {
        if(opened == closed && opened == maxLen)
        {
            result.Add(currentParenthesis);
            return;
        }
        
        if(opened < maxLen)
            Generate(currentParenthesis + "(", opened + 1, closed);
        if(closed < opened)
            Generate(currentParenthesis + ")", opened, closed + 1);
    }
}

결과

시간 큰 의미 없어 보임..

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글