Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
내 머리는 너무나 나빠서... 아이디어도 떠오르지 않음
이런 문제는 stack 을 많이 써서 스택으로 어떻게 하면 되려나 했지만..
도저히 감이 안잡혀서 베꼈다...^^
class Solution(object):
def generateParenthesis(self, N):
ans = []
def backtrack(S = '', left = 0, right = 0):
if len(S) == 2 * N:
ans.append(S)
return
if left < N:
backtrack(S+'(', left+1, right)
if right < left:
backtrack(S+')', left, right+1)
backtrack()
return ans
찾아보니까 backtracking 을 많이 사용하는 것 같음
코드 한줄한줄씩 예시로 테스트해보면 신기하게도 답이 나온다;
근데 완벽한 이해는 안된다는 점^^
그냥 외워야겠음