Leetcode Top 100
22. Generate Parentheses
오리_꿀꿀
2021. 1. 18. 23:40
괄호쌍의 개수를 입력받으면, 만들 수 있는 괄호들의 조합을 출력하는 문제이다.
풀이 방법
- 남은 '(' 의 갯수 : a , 닫히지 않은 '(' 갯수 : at , 남은 ')' 갯수 : b 로 설정한다.
- 재귀함수를 이용하여 모든 괄호가 사용될 때까지 수행한다.
- '(' 괄호가 남아있다면 '(' 를 temp배열에 추가하는 경우 수행
- 닫히지 않은 '(' 가 있다면 ')' 를 temp 배열에 추가하는 경우도 수행
- 만약 남은 괄호가 없다면 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