Grupos de paréntesis

Crea una función que divida una cadena en grupos de paréntesis balanceados. Un grupo termina cuando cada paréntesis de apertura de ese grupo ha sido emparejado con un paréntesis de cierre.

Ejemplos

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

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

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

Notas

La entrada está vacía o contiene únicamente paréntesis, y está balanceada en su totalidad.