Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 행과 열의 각 요소를 0 값에 대해 0으로 변환하는 프로그램


이제 주어진 행렬의 각 0에 대해 숫자의 2D 행렬이 있다고 가정하고 행과 열의 모든 값을 0으로 바꾸고 최종 행렬을 반환합니다.

따라서 입력이 행렬과 같으면 0번째, 2번째 및 3번째 행에 0이 포함되고 최종 행렬에 해당 행에 0이 포함되므로 출력은 행렬이 됩니다. 마찬가지로 0번째, 1번째 및 2번째 열에는 0이 포함되고 최종 행렬에는 해당 열에 0이 포함됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

n := row count, m := column count
res := make a matrix of size n x m and fill with 0
transpose := transpose given matrix
for each row i, do
   if 0 not in matrix[i], then
      for each column j in matrix, do
         if 0 not in transpose[j], then
            res[i, j] := matrix[i, j]
return res
를 수행합니다.

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, matrix):
      n, m = len(matrix), len(matrix[0])
      res = [[0 for __ in range(m)] for _ in range(n)]
      transpose = [list(row) for row in zip(*matrix)]

      for i in range(n):
         if 0 not in matrix[i]:
            for j in range(m):
               if 0 not in transpose[j]:
                  res[i][j] = matrix[i][j]

      return res

ob = Solution()
matrix = [
      [6, 0, 0, 6, 9],
      [4, 9, 9, 4, 8],
      [0, 8, 3, 4, 2],
      [9, 0, 7, 8, 3],
      [5, 2, 9, 6, 8]
]
print(ob.solve(matrix))

입력

matrix = [ [6, 0, 0, 6, 9], [4, 9, 9, 4, 8], [0, 8, 3, 4, 2], [9, 0, 7, 8, 3], [5, 2, 9, 6, 8] ]

출력

[[0, 0, 0, 0, 0], [0, 0, 0, 4, 8], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 6, 8]]