백준(1080) - 행렬 Python
백준(1080) - 행렬
문제풀이 : 그리디 알고리즘, 파이썬
해결방법
3 * 3 배열의 크기만큼 값을 바꿔준다는 것을 고민해보고 풀어야하는 문제이다.
for i in range(n-2):
for j in range(m-2):
따라서 위처럼 행렬을 비교할때 범위를 선정해주는 것만 주의하면 된다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
A = [[0] * m for _ in range(n)]
B = [[0] * m for _ in range(n)]
for i in range(n):
input_list = str(input())
for j in range(m):
A[i][j] = int(input_list[j])
for i in range(n):
input_list = str(input())
for j in range(m):
B[i][j] = int(input_list[j])
def change(A, x, y):
for i in range(3):
for j in range(3):
if A[x+i][y+j] == 1:
A[x+i][y+j] = 0
else:
A[x+i][y+j] = 1
cnt = 0
for i in range(n-2):
for j in range(m-2):
if A[i][j] != B[i][j]:
change(A, i, j)
cnt += 1
else:
continue
if A == B:
print(cnt)
else:
print(-1)
댓글남기기