# 343. Integer Break

#### Medium

***

Given an integer `n`, break it into the sum of `k` **positive integers**, where `k >= 2`, and maximize the product of those integers.

Return *the maximum product you can get*.

&#x20;

**Example 1:**

```
Input: n = 2
Output: 1
Explanation: 2 = 1 + 1, 1 × 1 = 1.
```

**Example 2:**

```
Input: n = 10
Output: 36
Explanation: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36.
```

&#x20;

**Constraints:**

* `2 <= n <= 58`

```python
class Solution:
    def integerBreak(self, n: int) -> int:
        dp = [0]*(n+1)
        for i in range(1, n+1):
            for j in range(1, i+1):
                if i+j <= n:
                    print("(dp[i]:",dp[i],",i:",i,")")
                    print("(dp[j]:",dp[j],",j:",j,")")
                    dp[i+j] = max(max(dp[i],i)*max(dp[j],j), dp[i+j])
                    print("->", dp[i+j])
                    print("="*10)
        return dp[n]
```
