[백준] 1080: 행렬

JIN·2022년 1월 8일
0

그리디

문제 : 행렬

그리디 문제 입니다 . 3x3 크기로 뒤집으니까 반복문을 돌면서 A와 B가 다른 부분이 나오면 뒤집는 연산을 수행하고, 마지막에 둘이 같은지 비교해서 다르면 -1, 같으면 몇번을 뒤집었는지 출력합니다.

현재 위치에서 가장 좋은 것 찾기!

import sys
input = sys.stdin.readline
n, m = map(int, input().split())
lstA = []
lstB = []
for i in range(n):
	lstA.append(list(map(int, sys.stdin.readline().rstrip())))
for i in range(n):
	lstB.append(list(map(int, sys.stdin.readline().rstrip())))
# 뒤집는 연산 현재 위치로부터 오른쪽으로 3칸, 아래쪽으로 3칸에 있는 수를 뒤집는다.
def matrix(i, j):
	for x in range(i, i+3):
		for y in range(j, j+3):
			lstA[x][y] = 1 - lstA[x][y]
#3칸씩 이동하므로 마지막 두칸은 놔두기 
count = 0
for i in range(n-2):
	for j in range(m-2):
		if lstA[i][j] != lstB[i][j]:
			matrix(i, j)
			count += 1
# 반복문 돌면서 다른거 나오면 멈춤 
flag = 0
for i in range(n):
	for j in range(m):
		if lstA[i][j] != lstB[i][j]:
			flag = 1
			break
if flag == 1:
	print(-1)
else:
	print(count)

profile
배우고 적용하고 개선하기

0개의 댓글