Problem :

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


My Solution :

class Solution:
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
self.ans = []
self.generate('', n, n)
return self.ans

def generate(self, prefix, left, right):
if left:
self.generate(prefix + '(', left-1, right)
if left < right:
self.generate(prefix + ')', left, right-1)
if right == 0:
self.ans.append(prefix)


Comment :

괄호를 여는 것은 언제나 가능하다. 괄호를 닫는 것은 지금까지 열었던 괄호의 개수보다 닫았던 괄호의 개수가 작을 때만 가능하다. 위 풀이에서는 남아있는 괄호의 개수를 기준으로 접근하였다.