[알고리즘] 백준 1080 행렬

CHOI IN HO·2024년 3월 5일
0

코딩테스트

목록 보기
63/74

풀이

풀이 방법을 생각하기 쉽지 않았다.
각 행을 돌면서 같지 않는 부분이 있으면 전환해준다. 이때 전환은 함수를 이용해서 작성해준다.
각 행을 다 돌았는데 리스트가 동일하지 않는 경우도 확인해준다.

n,m = map(int, input().split())

A = [list(map(int, input())) for _ in range(n)]
B = [list(map(int, input())) for _ in range(n)]

if (n < 3 or m < 3) and A != B :
    print(-1)
    exit()

def rev(i,j):
    for x in range(i, i+3):
        for y in range(j, j+3):
            if A[x][y] == 0:
                A[x][y] = 1
            else:
                A[x][y] = 0

cnt = 0
if (n < 3 or m < 3) and A != B :
    cnt = -1
else:
    for i in range(n-2):
        for j in range(m-2):
            if A[i][j] != B[i][j]:
                cnt+=1
                rev(i,j)

if cnt!=-1:
    if A != B:
        cnt = -1
print(cnt)
profile
개발자기 되기 위해선 무엇이든!

0개의 댓글