[실버2] 1080번 : 행렬

hyunnn·2021년 4월 9일
0

코딩테스트 준비

목록 보기
73/83

🛠 문제

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


👩🏻‍💻 해결 방법

A와 B를 비교했을 때, 값이 다른 경우 change 함수를 실행시켜 주었다
change 함수에서는 인자로 받은 위치를 시작으로 3x3 크기만큼 뒤집어 행렬 값을 뒤집어 주었다
이후 다시 A와 B를 비교하고, 만약 값이 다른 경우 isTrue 변수에 False를 저장해주었다

소스 코드

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

n, m = map(int, input().split())
a = [list(map(int, input())) for _ in range(n)]
b = [list(map(int, input())) for _ in range(n)]

cnt = 0
for i in range(n-2):
  for j in range(m-2):
    if a[i][j] != b[i][j]:
      change(i, j, a)
      cnt += 1

isTrue = True
for i in range(n):
  for j in range(m):
    if a[i][j] != b[i][j]:
      isTrue = False
      break

if not isTrue: 
  print(-1)
else:
  print(cnt)

0개의 댓글