[백준][Java] 1080번 행렬 (Greedy)

[백준][Java] 1080번 행렬 (Greedy)

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

public class Main {

private static BufferedReader br = new BufferedReader( new InputStreamReader( System . in ));

private static BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System . out ));

public static void main( String [] args) throws IOException{

String [] str = br.readLine(). split ( " " );

int N = Integer. parseInt (str[ 0 ]);

int M = Integer. parseInt (str[ 1 ]);

int [][] A = new int [N][M];

int [][] B = new int [N][M];

for ( int i = 0 ; i < N; i + + ) {

char [] input = br.readLine().toCharArray();

for ( int j = 0 ; j < M; j + + ) {

A[i][j] = input[j] - '0' ;

}

}

for ( int i = 0 ; i < N; i + + ) {

char [] input = br.readLine().toCharArray();

for ( int j = 0 ; j < M; j + + ) {

B[i][j] = input[j] - '0' ;

}

}

// for (int i = 0; i < B.length; i++) {

// for (int j = 0; j < B[0].length; j++) {

// System.out.print(A[i][j]);

// }

// System.out.println();

// }

int res = 0 ;

for ( int i = 0 ; i < N - 2 ; i + + ) {

for ( int j = 0 ; j < M - 2 ; j + + ) {

if (A[i][j] ! = B[i][j]) {

res + + ;

for ( int k = i; k < i + 3 ;k + + ) {

for ( int l = j; l < j + 3 ; l + + ) {

if (A[k][l] = = 1 ) A[k][l] = 0 ;

else A[k][l] = 1 ;

}

}

}

}

}

for ( int i = 0 ; i < N; i + + ) {

for ( int j = 0 ; j < M; j + + ) {

if (A[i][j] ! = B[i][j]) {

System . out . println ( - 1 );

return ;

}

}

}

System . out . println (res);

// System.out.println();

// for (int i = 0; i < B.length; i++) {

// for (int j = 0; j < B[0].length; j++) {

// System.out.print(A[i][j]);

// }

// System.out.println();

// }

// bw.write("");

// bw.flush();

// bw.close();

}

}

from http://aig2029.tistory.com/267 by ccl(A) rewrite - 2021-09-11 10:27:07