Agrupamentos de parênteses

Escreva uma função que divida uma string em agrupamentos de parênteses. Cada agrupamento deve estar balanceado.

Exemplos

split("()()()") ➞ ["()", "()", "()"]

split("((()))") ➞ ["((()))"]

split("((()))(())()()(()())") ➞ ["((()))", "(())", "()", "()", "(()())"]

split("((())())(()(()()))") ➞ ["((())())", "(()(()()))"]

Notas

  • Todas as strings de entrada conterão apenas parênteses.
  • Balanceado: Cada parêntese de abertura ( deve ter seu parêntese de fechamento correspondente ) dentro do mesmo agrupamento.