이진 행렬 매트가 있다고 가정합니다. 행렬의 각 행을 선택한 다음 행을 반대로 해야 합니다. 그런 다음 각 비트를 뒤집습니다(0에서 1, 1에서 0).
따라서 입력이 다음과 같으면
1 | 1 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
그러면 출력은
1 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 트랙:=0
- 매트의 각 행에 대해 다음을 수행합니다.
- 행 반전
- 추적기 :=0
- 행의 각 val에 대해 다음을 수행합니다.
- val이 1이면
- 매트[트랙, 트래커] :=0
- 그렇지 않으면
- 매트[트랙, 트래커] :=1
- 추적기 :=추적기 + 1
- val이 1이면
- 트랙:=트랙 + 1
- 반품 매트
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, mat): track=0 for row in mat: row.reverse() tracker = 0 for val in row: if val == 1: mat[track][tracker] = 0 else: mat[track][tracker] = 1 tracker += 1 track += 1 return mat ob = Solution() mat = [[1,1,0],[0,1,0],[0,0,1]] print(ob.solve(mat))
입력
[[1,1,0],[0,1,0],[0,0,1]]
출력
[[1, 0, 0], [1, 0, 1], [0, 1, 1]]