1080 : 행렬

풀이

그냥 그리디하게 (i,j)가 다르면 바꿔주면 된다!

코드

#include <stdio.h>

int main() {
	int i, j, x, y, ans = 0, n, m;
	char a[51][51], b[51][51];
	scanf("%d %d", &n, &m);
	for (i = 0; i < n; i++) scanf("%s", a[i]);
	for (i = 0; i < n; i++) scanf("%s", b[i]);
	for (i = 0; i < n - 2; i++) {
		for (j = 0; j < m - 2; j++) {
			if (a[i][j] == b[i][j]) continue;
			ans++;
			for (x = i; x < i + 3; x++) {
				for (y = j; y < j + 3; y++) {
					if (a[x][y] == '0') a[x][y] = '1';
					else a[x][y] = '0';
				}
			}
		}
	}
	for (i = 0; i < n; i++) for (j = 0; j < m; j++)
		if (a[i][j] != b[i][j]) { puts("-1"); return 0; }
	printf("%d", ans);

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-03-14 16:13

Read more posts by this author