# 2522. Partition String Into Substrings With Values at Most K
###### tags: `Leetcode` `Medium` `Dynamic Programming` `Greedy`
Link: https://leetcode.com/problems/partition-string-into-substrings-with-values-at-most-k/description/
## 思路
一开始想用dp 但是忽略了k的长度小于等于9的条件 对于每一个i都检查一遍所有在前面的j 因此导致TLE
实际上有更简单的方法就是用greedy track current number ```curr``` 如果```curr>k``` 就开启新的partition
## Code
Greedy
```python=
class Solution:
def minimumPartition(self, s: str, k: int) -> int:
cur = 0
ans = 1
for d in s:
cur = cur*10+int(d)
if cur>k:
ans += 1
cur = int(d)
if cur>k:
return -1
return ans
```
DP
```python=
class Solution:
def minimumPartition(self, s: str, k: int) -> int:
if k<9:
for d in s:
if int(d)>k: return -1
dp = [math.inf]*len(s)
dp[0] = 1
for i in range(1, len(s)):
for j in range(max(i-9, -1), i):
if int(s[j+1:i+1])<=k:
dp[i] = min(dp[i], 1 if j==-1 else dp[j]+1)
return dp[len(s)-1]
```