from math import sqrt, ceil def numberOfSteps(bricks: int) -> int: """ Given a number of bricks return how many steps would be required to use them all given that: S(0) = 0 S(n) = S(n-1) + n Formula: `S=(-1+sqrt(1+8*n))/2` """ return ceil((-1 + sqrt(1 + 8 * bricks)) / 2) print("Testing numberOfSteps()...", end="") assert numberOfSteps(0) == 0 assert numberOfSteps(1) == 1 assert numberOfSteps(2) == 2 assert numberOfSteps(3) == 2 assert numberOfSteps(4) == 3 assert numberOfSteps(6) == 3 assert numberOfSteps(7) == 4 assert numberOfSteps(10) == 4 assert numberOfSteps(11) == 5 assert numberOfSteps(55) == 10 assert numberOfSteps(56) == 11 print("Passed!")