import math def solution(area): return chop(area) def chop(area): remain_area = area squares = [] while (remain_area > 0): cutting_area = int(math.floor(remain_area ** 0.5)) ** 2 remain_area -= cutting_area squares.append(cutting_area) return squares def chop_recursive(area): if area == 0: return [] else: cutting_area = int(math.floor(area ** 0.5)) ** 2 return [cutting_area] + chop(area - cutting_area) print(solution(15324)) print(solution(12)) print(solution(1)) print(solution(1000000))