import java.util.Scanner;
public class Main {
static char[][] whiteFirstChess = new char[8][8];
static char[][] blackFirstChess = new char[8][8];
static int count = Integer.MAX_VALUE;
public static void buildChess() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if ((i % 2 == 0 || j % 2 == 0) && (i % 2 != 0 || j % 2 != 0)) {
whiteFirstChess[i][j] = 'W';
} else {
whiteFirstChess[i][j] = 'B';
}
}
}
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if ((i % 2 == 0 || j % 2 == 0) && (i % 2 != 0 || j % 2 != 0)) {
blackFirstChess[i][j] = 'B';
} else {
blackFirstChess[i][j] = 'W';
}
}
}
}
public static void compareChess(char[][] myChess, int x, int y) {
int temp = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (myChess[i + x][j + y] != whiteFirstChess[i][j]) {
temp++;
}
}
}
count = Math.min(count, temp);
temp = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (myChess[i + x][j + y] != blackFirstChess[i][j]) {
temp++;
}
}
}
count = Math.min(count, temp);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
char[][] myChess = new char[n][m];
for (int i = 0; i < n; i++) {
String s = sc.next();
for (int j = 0; j < m; j++) {
myChess[i][j] = s.charAt(j);
}
}
buildChess();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (i + 8 <= n && j + 8 <= m) {
compareChess(myChess, i, j);
}
}
}
System.out.println(count);
}
}
먼저, 체스판은 두가지 경우로 나눌수가 있다.
흰색먼저 시작하는 경우, 검정색 먼저 시작하는 경우.
=>.검정색이 먼저 시작하는 경우.
-짝수 행 일 때, 짝수 열 이면 검정색.
-홀수 행 일 때, 홀수 열 이면 검정색
-짝수 행 일 때, 홀수 열 이면 흰색
-홀수 행 일 때, 짝수 열 이면 흰색
=>.흰색이 먼저 시작하는 경우.
-짝수 행 일 때, 짝수 열 이면 흰색
-홀수 행 일 때, 홀수 열 이면 흰색
-짝수 행 일 때, 홀수 열 이면 검정색
-홀수 행 일 때, 짝수 열 이면 검정색
1. 1번과 2번을 만족하는 8x8 체스판을 각각 만든다.
2. 사용자로부터 입력받은 8x8 이상의 체스판을 만든다.
3. 두 체스판을 비교하여, 검정색이 먼저인 경우의 체스판과 흰색이 먼저인 체스판 중 교체 횟수가 적은 수가 출력 결과이다.
'Algorithm by java' 카테고리의 다른 글
백준 1712번 손익분기점 java (0) | 2019.08.29 |
---|---|
백준 2455번 지능형 기차 java (0) | 2019.08.27 |
백준 1436 영화감독 숌 java (0) | 2019.08.19 |
백준 7568 덩치 java (0) | 2019.08.16 |
2798 블랙잭 - java (0) | 2019.08.14 |