Search
Duplicate

행렬

주차
19
문제번호
1080
언어
C++
티어
실버
유형
그리디
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

로직 설명

전체 배열중 (0,0)과 (N-3, M-3)를 사각형 대각선 양 끝 점으로 만들어 해당 범위 안의 값을 순회 합니다.
A와 B의 해당 위치 값이 다르다면 해당 위치에서 3x3만큼 값을 뒤집습니다.

Code

제출 날짜

@5/8/2021
import sys N, M = map(int, sys.stdin.readline().split()) A = [] B = [] ans = 0 for _ in range(N): tmp = sys.stdin.readline().strip() l = [] for i in tmp: l.append(ord(i) - 48) A.append(l) for _ in range(N): tmp = sys.stdin.readline().strip() l = [] for i in tmp: l.append(ord(i) - 48) B.append(l) def flip(y, x): for i in range(3): for j in range(3): if (A[y + i][x + j]): A[y + i][x + j] = 0 else: A[y + i][x + j] = 1 def check(y, x): for i in range(N): for j in range(M): if (A[y + i][x + j] != B[y + i][x + j]): return 0 return 1 for i in range(N - 2): for j in range(M - 2): if (A[i][j] != B[i][j]): flip(i, j) ans+=1 if (check(0,0)): print(ans) else: print(-1)
Python
복사