Given a m * n matrix of ones and zeros, return how many square submatrices have all ones.
0과 1로 이루어진 m * n 그리드가 주어진다.
얼마나 많은 1로만 이루어진 정 사각형을 만들수 있을까?
흰색이 0, 검은색이 1이다.
class Solution:
def countSquares(self, matrix: List[List[int]]) -> int:
ROW = len(matrix)
COL = len(matrix[0])
one = [[0] * COL for _ in range(ROW)]
ans = 0
for r in range(ROW):
for c in range(COL):
if matrix[r][c] == 1:
if r == 0 or c == 0:
# 첫 행이나 열의 경우 사이즈가 1인것밖에 만들수 없다.
one[r][c] = matrix[r][c]
else:
# 이 외의 경우 자신을 기준으로 옆과 대각선의 최소값 을 기준으로 자기 자신 ( 1 사이즈 ) 를 더한다.
one[r][c] = min(one[r-1][c], one[r][c-1], one[r-1][c-1]) + 1
ans += one[r][c]
return ans