백준(1080) - 행렬 Python

최대 1 분 소요

백준(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)

댓글남기기