import java.util.*;
public class Main
{
public static boolean[][] arr;
public static int min = 64;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int M = in.nextInt();
arr = new boolean[N][M];
// 배열 입력
for (int i = 0; i < N; i++) {
String str = in.next();
for (int j = 0; j < M; j++) {
if (str.charAt(j) == 'W') {
arr[i][j] = true; // W일 때는 true
} else {
arr[i][j] = false; // B일 때는 false
}
}
}
int N_row = N - 7;
int M_col = M - 7;
for (int i = 0; i < N_row; i++) {
for (int j = 0; j < M_col; j++) {
find(i, j);
}
}
System.out.println(min);
}
//몇개 고쳐야 되는지 찾는 함수
public static void find(int x, int y){
int end_x = x + 8;
int end_y = y + 8;
int cnt = 0;
boolean TF = arr[x][y]; // 기준
for(int i = x; i < end_x; i++){
for(int j = y; j < end_y; j++){
if(arr[i][j] != TF){
cnt++;
}
TF = (!TF);
}
TF = (!TF);
}
cnt = Math.min(cnt, 64 - cnt); // 무조건 기준점에서 최솟값이 아님
min = Math.min(min, cnt);
}
}
구하려는 것
고쳐야 되는거 갯수
m - 7
x
n - 7
x
2
1. arr 만듦
row, col 설정
for(row)
for(col)
{find 메소드 }
find 메소드 :
기준점 = TF
end_x, y 설정
=> 현재점 + 8
for(end_x)
for(end_y)
if() => 기준과 다를 때 추가
'알고리즘' 카테고리의 다른 글
[백준] 1003번(python 파이썬) (0) | 2022.06.29 |
---|---|
[백준] 1436번(python 파이썬) (0) | 2022.06.26 |
<백준> 7568번 파이썬 알고리즘 (0) | 2022.06.01 |
<백준> 17478번 파이썬 알고리즘 (0) | 2022.05.26 |
<백준> 1644번 파이썬 알고리즘 (0) | 2022.04.20 |