-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDay 50
More file actions
29 lines (25 loc) · 1.09 KB
/
Day 50
File metadata and controls
29 lines (25 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#paths-in-matrix-whose-sum-is-divisible-by-k:-
class Solution:
def numberOfPaths(self, grid: List[List[int]], k: int) -> int:
MOD = 10**9 + 7
m, n = len(grid), len(grid[0])
dp = [[0] * k for _ in range(n)]
dp[0][grid[0][0] % k] = 1
for j in range(1, n):
v = grid[0][j] % k
for r in range(k):
dp[j][(r + v) % k] = (dp[j][(r + v) % k] + dp[j-1][r]) % MOD
for i in range(1, m):
new_dp = [[0] * k for _ in range(n)]
v = grid[i][0] % k
for r in range(k):
new_dp[0][(r + v) % k] = (new_dp[0][(r + v) % k] + dp[0][r]) % MOD
for j in range(1, n):
v = grid[i][j] % k
for r in range(k):
if dp[j][r]:
new_dp[j][(r + v) % k] = (new_dp[j][(r + v) % k] + dp[j][r]) % MOD
if new_dp[j-1][r]:
new_dp[j][(r + v) % k] = (new_dp[j][(r + v) % k] + new_dp[j-1][r]) % MOD
dp = new_dp
return dp[n-1][0] % MOD