알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 행렬(1080)

HRuler 2023. 6. 24. 17:38

1. 문제

https://www.acmicpc.net/problem/1080

 

1080번: 행렬

첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다.

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# n, m : 행렬 크기
n, m = map(int, input().split())

a_array = []
b_array = []
for i in range(n):
    a_array.append(list(input()))
for i in range(n):
    b_array.append(list(input()))
    
cnt = 0
for i in range(0, n - 2):
    for j in range(0, m - 2):
        if a_array[i][j] != b_array[i][j]:
            cnt += 1
            for p in range(i, i + 3):
                for q in range(j, j + 3):
                    if a_array[p][q] == "0":
                        a_array[p][q] = "1"
                    else:
                        a_array[p][q] = "0"

if a_array == b_array:
    print(cnt)
else:
    print(-1)