올바른 괄호란 (())
나 ()
와 같이 올바르게 모두 닫힌 괄호를 의미한다.
괄호 쌍의 개수 n
이 주어질 때, n
개의 괄호 쌍으로 만들 수 있는 모든 가능한 괄호 문자열의 갯수를 반환한다.
n
개씩 사용했다면 올바르게 됬다 판단하고 1을 반환한다.n
개 보다 더 사용됬다면 올바르지 않다 판단하고 0을 반환한다.def recursive(o: int, c: int, n: int) -> int:
# o : 사용한 open 괄호 갯수
# c : 사용한 close 괄호 갯수
if o == n and c == n: # 올바르게 괄호 완성한 경우
return 1
if o > n or c > n:
return 0
if o < c :
return 0
ret = 0
ret += recursive(o + 1, c, n)
ret += recursive(o, c + 1, n)
return ret
def solution(n):
answer = recursive(0, 0, n)
return answer