이진 행렬이 있다고 가정합니다. 다음 규칙을 따르는 행렬의 요소 수를 찾아야 합니다. -
-
행렬[r, c] =1
-
j가 c와 같지 않은 경우 모든 j에 대해 matrix[r, j] =0이고 i가 r과 같지 않은 경우 모든 i에 대해 matrix[i, c] =0입니다.
따라서 입력이 다음과 같으면
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
기준을 충족하는 셀 (0,2), (1,0) 및 (2,1)이 있으므로 출력은 3이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
행렬이 비어 있으면
-
0 반환
-
-
row :=행렬의 모든 행 항목의 합계 목록
-
col :=행렬의 모든 열 항목의 합계 목록
-
m :=행렬의 행 수
-
n :=행렬의 열 개수
-
해상도 :=0
-
0 ~ m - 1 범위의 r에 대해 수행
-
0 ~ n - 1 범위의 c에 대해 수행
-
행렬[r, c]가 1이고 행[r]이 1이고 col[c]도 1이면
-
해상도 :=해상도 + 1
-
-
-
-
반환 해상도
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(matrix): if not matrix: return 0 row = [sum(r) for r in matrix] col = [sum(c) for c in zip(*matrix)] m, n = len(matrix), len(matrix[0]) res = 0 for r in range(m): for c in range(n): if matrix[r][c] == 1 and row[r] == 1 and col[c] == 1: res += 1 return res matrix = [ [0, 0, 1], [1, 0, 0], [0, 1, 0] ] print(solve(matrix))
입력
[[0, 0, 1],[1, 0, 0],[0, 1, 0]]
출력
3