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

파이썬에서 폭탄이 폭발할 때 장소의 수를 찾는 프로그램은 안전합니까?

<시간/>

2차원 이진 행렬이 있다고 가정합니다. 여기서 1은 폭탄을 나타내고 0은 빈 셀을 나타냅니다. 폭탄이 터지면 같은 행과 열에 있는 모든 공간이 손상됩니다. 손상되지 않도록 서 있을 수 있는 공간의 수를 찾아야 합니다.

따라서 입력이 다음과 같으면

1 1 0
0 0 0
0 0 0

오른쪽 하단 셀과 오른쪽 중간 셀이 두 개의 공백이 있으므로 출력은 2가 됩니다.

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

  • r :=행렬의 행 개수와 같은 크기의 목록이고 false로 채우기

  • c :=행렬의 열 개수와 같은 크기의 목록이고 false로 채우기

  • 범위 0에서 행렬의 행 수 - 1에 있는 i에 대해 수행

    • 범위 0에서 행렬의 열 개수 - 1까지의 j에 대해 수행

      • 행렬[i, j]가 1과 같으면

        • r[i] :=참, c[j] :=참

  • CT :=0

  • 범위 0에서 행렬의 행 수 - 1에 있는 i에 대해 수행

    • 범위 0에서 행렬의 열 개수 - 1까지의 j에 대해 수행

      • r[i]가 False이고 c[j]가 False이면

        • ct :=ct + 1

  • 리턴 ct

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

class Solution:
   def solve(self, matrix):
      r = [False for i in range(len(matrix))]
      c = [False for i in range(len(matrix[0]))]

      for i in range(len(matrix)):
         for j in range(len(matrix[0])):
            if matrix[i][j] == 1:
               r[i] = True
               c[j] = True

   ct = 0
   for i in range(len(matrix)):
      for j in range(len(matrix[0])):
         if r[i] == False and c[j] == False:
            ct += 1
   return ct

ob = Solution()
matrix = [
   [1, 1, 0],
   [0, 0, 0],
   [0, 0, 0]
]
print(ob.solve(matrix))

입력

[
[1, 1, 0],
[0, 0, 0],
[0, 0, 0] ]

출력

2