백준

백준 1080 행렬(Java)

Park DJ 2023. 2. 20. 11:23

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

 

1080번: 행렬

첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다.

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int count = 0;
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[][] arr = new int[n][m];
    int[][] check = new int[n][m];

    for(int i = 0; i < n; i++) {
      String str = sc.next();
      for(int j = 0; j < m; j++) arr[i][j] = str.charAt(j) - '0';
    }

    for(int i = 0; i < n; i++) {
      String str = sc.next();
      for(int j = 0; j < m; j++) check[i][j] = str.charAt(j) - '0';
    }

    for(int i = 0; i < n; i++) {
      for(int j = 0; j < m; j++) {
        if(arr[i][j] != check[i][j] && i + 2 < n && j + 2 < m) {
          for(int a = i; a < i + 3; a++) {
            for(int b = j; b < j + 3; b++) {
              if(arr[a][b] == 0) arr[a][b] = 1;
              else arr[a][b] = 0;
            }
          }
          count++;
        }
      }
    }

    for(int i = 0; i < n; i++) {
      for(int j = 0; j < m; j++) {
        if(arr[i][j] != check[i][j]) {
          System.out.println(-1);
          return;
        }
      }
    }
    
    System.out.println(count);
  }
}