문제 : 행렬
그리디 문제 입니다 . 3x3 크기로 뒤집으니까 반복문을 돌면서 A와 B가 다른 부분이 나오면 뒤집는 연산을 수행하고, 마지막에 둘이 같은지 비교해서 다르면 -1, 같으면 몇번을 뒤집었는지 출력합니다.
현재 위치에서 가장 좋은 것 찾기!
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
lstA = []
lstB = []
for i in range(n):
lstA.append(list(map(int, sys.stdin.readline().rstrip())))
for i in range(n):
lstB.append(list(map(int, sys.stdin.readline().rstrip())))
# 뒤집는 연산 현재 위치로부터 오른쪽으로 3칸, 아래쪽으로 3칸에 있는 수를 뒤집는다.
def matrix(i, j):
for x in range(i, i+3):
for y in range(j, j+3):
lstA[x][y] = 1 - lstA[x][y]
#3칸씩 이동하므로 마지막 두칸은 놔두기
count = 0
for i in range(n-2):
for j in range(m-2):
if lstA[i][j] != lstB[i][j]:
matrix(i, j)
count += 1
# 반복문 돌면서 다른거 나오면 멈춤
flag = 0
for i in range(n):
for j in range(m):
if lstA[i][j] != lstB[i][j]:
flag = 1
break
if flag == 1:
print(-1)
else:
print(count)