💡문제접근
- 3 × 3 행렬을 함수
reverse
를 작성, for문을 이용해 전 범위를 탐색한 다음 일치하지 않으면 1을 0으로, 0을 1로 바꾸는 연산을 수행한 다음 마지막에 함수 check
를 작성, 행렬 A와 행렬 B가 일치한다면 필요한 연산의 횟수의 최솟값을 출력하고 일치하지 않다면 0을 출력한다.
💡코드(메모리 : 31256KB, 시간 : 44ms)
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
first_matrix = [list(input()) for _ in range(N)]
second_matrix = [list(input()) for _ in range(N)]
def reverse(x, y):
for i in range(x, x+3):
for j in range(y, y+3):
if first_matrix[i][j] == "0":
first_matrix[i][j] = "1"
else:
first_matrix[i][j] = "0"
def check():
for i in range(N):
for j in range(M):
if first_matrix[i][j] != second_matrix[i][j]:
return False
return True
cnt = 0
for i in range(N-2):
for j in range(M-2):
if first_matrix[i][j] != second_matrix[i][j]:
reverse(i, j)
cnt += 1
if check():
print(cnt)
else:
print(-1)
💡소요시간 : 18m