1080번: 행렬

Memo


로직 설명

Code


제출 날짜

2021/05/08

import sys

N, M = map(int, sys.stdin.readline().split())
A = []
B = []
ans = 0
for _ in range(N):
    tmp = sys.stdin.readline().strip()
    l = []
    for i in tmp:
        l.append(ord(i) - 48)
    A.append(l)
for _ in range(N):
    tmp = sys.stdin.readline().strip()
    l = []
    for i in tmp:
        l.append(ord(i) - 48)
    B.append(l)

def flip(y, x):
    for i in range(3):
        for j in range(3):
            if (A[y + i][x + j]):
                A[y + i][x + j] = 0
            else:
                A[y + i][x + j] = 1

def check(y, x):
    for i in range(N):
        for j in range(M):
            if (A[y + i][x + j] != B[y + i][x + j]):
                return 0
    return 1

for i in range(N - 2):
    for j in range(M - 2):
        if (A[i][j] != B[i][j]):
            flip(i, j)
            ans+=1

if (check(0,0)):
    print(ans)
else:
    print(-1)