Agrupamentos de parênteses

Crie uma função que divida uma string em agrupamentos de parênteses balanceados. Um agrupamento termina quando cada parêntese de abertura desse agrupamento foi emparelhado com um parêntese de fechamento.

Exemplos

Program.Split("()()()") ➞ ["()", "()", "()"]

Program.Split("((()))") ➞ ["((()))"]

Program.Split("((()))(())()()(()())") ➞ ["((()))", "(())", "()", "()", "(()())"]

Notas

A entrada está vazia ou contém apenas parênteses, e está balanceada como um todo.