Leetcode Top 100

22. Generate Parentheses

오리_꿀꿀 2021. 1. 18. 23:40

괄호쌍의 개수를 입력받으면, 만들 수 있는 괄호들의 조합을 출력하는 문제이다.

 

풀이 방법

  1. 남은 '(' 의 갯수 : a , 닫히지 않은 '(' 갯수 : at , 남은 ')' 갯수 : b 로 설정한다.
  2. 재귀함수를 이용하여 모든 괄호가 사용될 때까지 수행한다.
  3. '(' 괄호가 남아있다면 '(' 를 temp배열에 추가하는 경우 수행
  4. 닫히지 않은 '(' 가 있다면 ')' 를 temp 배열에 추가하는 경우도 수행
  5. 만약 남은 괄호가 없다면 result에 temp저장

 

최근에 문제 자체가 단순해서 그런가 푸는 속도가 조금 빨라졌다.

문제를 풀기 전에 어떻게 코드를 구성할지 정리를 하니까 조금 더 실수하는 시간이 줄어든 것 같다.

 

 

 

소스코드

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        temp = []
        result =[]
        def recur(a,b,at):
            if a > 0:
                temp.append('(')
                recur(a-1,b,at+1)
                temp.pop()
            if b > 0 and at > 0:
                temp.append(')')
                recur(a,b-1,at-1)
                temp.pop()
            if a == 0 and b == 0:
                result.append(''.join(temp))
        recur(n,n,0)
        return result