알고리즘/리트코드
3070. Count Submatrices with Top-Left Element and Sum Less Than k
jinmc
2024. 3. 5. 16:28
반응형
사실 그렇게 어려운 문제는 아니었습니다.
weekly contest에서 두번째로 나왔던 문제로,
prefix sum을 사용해서, 각 row의 합을 저장해서 새로운 list에 저장하고,
새로운 row에서 iterate할 때는 새로운 row에서 그 row의 합들과 지금까지 더한 위의 row의 합을 더해주는 방식으로 해서 몇 번의 시행착오 끝에 풀어낼 수 있었습니다.
class Solution:
def countSubmatrices(self, grid: List[List[int]], k: int) -> int:
m, n = len(grid[0]), len(grid)
new_matrix = [[0 for _ in range(m)] for _ in range(n)]
# print(new_matrix)
count = 0
for j in range(n):
row_sum = grid[j]
for i in range(m):
# new_matrix[j][i] = grid[j][i]
if j > 0:
new_matrix[j][i] += new_matrix[j-1][i]
if i > 0:
row_sum[i] += row_sum[i-1]
new_matrix[j][i] += row_sum[i]
# if count?
if new_matrix[j][i] <= k:
count += 1
# print(new_matrix[j][i])
# print(new_matrix)
return count
반응형