행렬 [백준 1080]
https://www.acmicpc.net/problem/1080
다소 복잡하게 생각하다가 많이 돌아갔는데, 그저 칸들을 다 돌아보면서 값이 다른 칸이 있으면 3 * 3 을 뒤집어주고 모든 칸들을 다 조사했을 때 똑같지 않다면 -1 제출한다.
n, m = map(int, input().split())
array1 = [[int(i) for i in input()] for _ in range(n)]
array2 = [[int(i) for i in input()] for _ in range(n)]
board = [[0] * m for _ in range(n)]
def flip(x, y): #뒤집기
for i in range(x, x + 3):
for j in range(y, y + 3):
board[i][j] = (board[i][j] + 1) % 2
for i in range(n):
for j in range(m):
board[i][j] = (array1[i][j] + array2[i][j]) % 2
# 행렬 합치기
count = 0
for i in range(n):
for j in range(m):
if board[i][j] == 1 and i <= n - 3 and j <= m - 3:
flip(i, j)
count += 1
for i in range(n):
for j in range(m):
if board[i][j] != 0:
count = -1
print(count)