반응형
이 문제는 그리디 알고리즘으로 쉽게 풀 수 있는 문제이다.
두 개의 배열에 입력을 받고 0,0부터 차례대로 두 배열의 원소가 같은지 비교해주면 된다.
만약 배열의 원소가 같지 않다면 3x3에 해당되는 원소를 true에서 false로 , false에서 true로 바꿔주고
count를 1 증가시켜주면 된다.
배열의 인덱스 범위에 대해서 조금만 신경을 쓴다면 쉽게 맞을 수 있는 문제인 것 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, M, count, temp;
static boolean[][] arr1;
static boolean[][] arr2;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
arr1 = new boolean[N][M];
arr2 = new boolean[N][M];
for (int i = 0; N > i; ++i) {
str = br.readLine();
for (int j = 0; M > j; ++j) {
if (str.charAt(j) - 48 == 0) {
arr1[i][j] = false;
} else {
arr1[i][j] = true;
}
}
}
for (int i = 0; N > i; ++i) {
str = br.readLine();
for (int j = 0; M > j; ++j) {
if (str.charAt(j) - 48 == 0) {
arr2[i][j] = false;
} else {
arr2[i][j] = true;
}
}
}
for (int i = 0; N - 2 > i; ++i) {
for (int j = 0; M - 2 > j; ++j) {
if (arr1[i][j] != arr2[i][j]) {
arr1[i][j] = !arr1[i][j];
arr1[i + 1][j] = !arr1[i + 1][j];
arr1[i + 2][j] = !arr1[i + 2][j];
arr1[i][j + 1] = !arr1[i][j + 1];
arr1[i + 1][j + 1] = !arr1[i + 1][j + 1];
arr1[i + 2][j + 1] = !arr1[i + 2][j + 1];
arr1[i][j + 2] = !arr1[i][j + 2];
arr1[i + 1][j + 2] = !arr1[i + 1][j + 2];
arr1[i + 2][j + 2] = !arr1[i + 2][j + 2];
++count;
}
}
}
for (int i = 0; N > i; ++i) {
for (int j = 0; M > j; ++j) {
if (arr1[i][j] != arr2[i][j]) {
temp++;
break;
}
}
if (temp > 0)
break;
}
if (temp > 0) {
System.out.print("-1");
} else {
System.out.println(count);
}
}
}
반응형
'컴퓨터 > 백준' 카테고리의 다른 글
JAVA - 백준 알고리즘 - 2133 타일 채우기 (0) | 2020.02.27 |
---|---|
JAVA - 백준 알고리즘 - 1700 멀티탭 스케줄링 (0) | 2020.02.26 |
JAVA - 백준 알고리즘 - 1969 DNA (0) | 2020.02.25 |
JAVA - 백준 알고리즘 - 11399 ATM (0) | 2020.02.25 |
JAVA - 백준 알고리즘 - 1541 잃어버린 괄호 (0) | 2020.02.25 |