Memo
로직 설명
•
전체 배열중 (0,0)과 (N-3, M-3)를 사각형 대각선 양 끝 점으로 만들어 해당 범위 안의 값을 순회 합니다.
•
A와 B의 해당 위치 값이 다르다면 해당 위치에서 3x3만큼 값을 뒤집습니다.
Code
제출 날짜
@5/8/2021
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)
Python
복사