hj1115hj   2년 전

전체 배열을 한번 다 바꾸자나요??이게 왜 정답이 되는걸까요??
3by 4 배열이 있으면 

( 0,0) ( 0, 1) 

배열이 다를경우 (0,0) (0,1)를 기준으로 3 by 3 만큼 0->1 1->0 으로바꿔주는데..

이후 (0,2)가 다를경우는?? 왜 바꿔주지 않고 답이 되지 않는 걸까요?

그리고 (0,1)일 경우에는 3by 3 배열로 두번이나 바꿔지는데 그거는 문제 없는거에요?

#include <cstdio>
using namespace std;
int a[50][50];
int b[50][50];
void flip(int x, int y) {
for (int i = x ; i <= x + 2; i++) {
for (int j = y ; j <= y + 2; j++) {
a[i][j] = 1 - a[i][j];
}
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = 0; i<n; i++) {
for (int j = 0; j<m; j++) {
scanf("%1d", &a[i][j]);
}
}
for (int i = 0; i<n; i++) {
for (int j = 0; j<m; j++) {
scanf("%1d", &b[i][j]);
}
}
int ans = 0;
for (int i = 0; i<n - 2; i++) {
for (int j = 0; j<m - 2; j++) {
if (a[i][j] != b[i][j]) {
ans += 1;
flip(i , j );
}
}
}
for (int i = 0; i<n; i++) {
for (int j = 0; j<m; j++) {
if (a[i][j] != b[i][j]) {
printf("-1\n");
return 0;
}
}
}
printf("%d\n", ans);
return 0;
}

sgchoi5   2년 전

질문 작성하실 때에 문제 번호 칸에 번호를 맞게 넣어주세요.

댓글을 작성하려면 로그인해야 합니다.