Integer Break

MediumMathDynamic Programming

Solution

export function integerBreak(n: number): number {
  if (n <= 3) {
    return n - 1;
  }
  const share = Math.floor(n / 3);
  if (n % 3 === 1) {
    return 3 ** (share - 1) * 4;
  }
  if (n % 3 === 2) {
    return 3 ** share * 2;
  }
  return 3 ** share;
}