풀이
import java.util.Scanner;
public class Main {
public static int min = 64;
public static int[][] arr;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = scan.nextInt(); // 행
int y = scan.nextInt(); // 열
arr = new int[x][y];
String[] arr2;
scan.nextLine();
// 입력받기
for(int i=0; i<x; i++){
arr2 = scan.nextLine().split("");
for(int j=0; j<y; j++){
if("B".equals(arr2[j])) {
arr[i][j] = 1;
}else {
arr[i][j] = -1;
}
}
}
int xSize = x-7;
int ySize = y-7;
// 중복 최소 찾기
for(int i=0; i<xSize; i++){
for(int j=0; j<ySize; j++){
find(i, j);
}
}
System.out.println(min);
}
private static void find(int hang, int start){
int change = 0; // 변경해야 될 개수
int change2 = 0; // 변경해야 될 개수
int hang_last = hang+8;
int start_last = start+8;
int check = 1;
// B와 W 개수 Count
for(int i=hang; i<hang_last; i++) {
check *= -1;
for(int j=start; j<start_last; j++) {
if(arr[i][j] != check) {
change++;
}
check *= -1;
}
}
check = -1;
for(int i=hang; i<hang_last; i++) {
check *= -1;
for(int j=start; j<start_last; j++) {
if(arr[i][j] != check) {
change2++;
}
check *= -1;
}
}
if(change > change2) {
if(min > change2) {
min = change2;
}
}else {
if(min > change) {
min = change;
}
}
}
}
'코딩 문제 > 백준' 카테고리의 다른 글
백준 - 1059번 (0) | 2021.03.15 |
---|---|
백준 - 1037번 (0) | 2021.03.15 |
백준 - 1010번 (0) | 2021.02.26 |
백준 - 1009번 (0) | 2021.02.26 |
백준 - 18405번 (0) | 2021.02.16 |