๋ฌธ์
์ง๋ฏผ์ด๋ ์์ ์ ์ ํ์์ MN๊ฐ์ ๋จ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ M*N ํฌ๊ธฐ์ ๋ณด๋๋ฅผ ์ฐพ์๋ค. ์ด๋ค ์ ์ฌ๊ฐํ์ ๊ฒ์์์ผ๋ก ์น ํด์ ธ ์๊ณ , ๋๋จธ์ง๋ ํฐ์์ผ๋ก ์น ํด์ ธ ์๋ค. ์ง๋ฏผ์ด๋ ์ด ๋ณด๋๋ฅผ ์๋ผ์ 8*8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
์ฒด์คํ์ ๊ฒ์์๊ณผ ํฐ์์ด ๋ฒ๊ฐ์์ ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ๊ฐ ์นธ์ด ๊ฒ์์๊ณผ ํฐ์ ์ค ํ๋๋ก ์์น ๋์ด ์๊ณ , ๋ณ์ ๊ณต์ ํ๋ ๋ ๊ฐ์ ์ฌ๊ฐํ์ ๋ค๋ฅธ ์์ผ๋ก ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด ์ ์๋ฅผ ๋ฐ๋ฅด๋ฉด ์ฒด์คํ์ ์์น ํ๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง๋ฟ์ด๋ค. ํ๋๋ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ, ํ๋๋ ๊ฒ์์์ธ ๊ฒฝ์ฐ์ด๋ค.
๋ณด๋๊ฐ ์ฒด์คํ์ฒ๋ผ ์น ํด์ ธ ์๋ค๋ ๋ณด์ฅ์ด ์์ด์, ์ง๋ฏผ์ด๋ 8*8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ์๋ผ๋ธ ํ์ ๋ช ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋ค์ ์น ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋น์ฐํ 8*8 ํฌ๊ธฐ๋ ์๋ฌด๋ฐ์๋ ๊ณจ๋ผ๋ ๋๋ค. ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ณด๋์ ๊ฐ ํ์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. B๋ ๊ฒ์์์ด๋ฉฐ, W๋ ํฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
8 8
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBBBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
์์ ์ถ๋ ฅ 1
1
์์ ์ ๋ ฅ 2
10 13
BBBBBBBBWBWBW
BBBBBBBBBWBWB
BBBBBBBBWBWBW
BBBBBBBBBWBWB
BBBBBBBBWBWBW
BBBBBBBBBWBWB
BBBBBBBBWBWBW
BBBBBBBBBWBWB
WWWWWWWWWWBWB
WWWWWWWWWWBWB
์์ ์ถ๋ ฅ 2
12
ํ์ด
์ฒด์คํ์ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ์์ชฝ์ด ๊ฒ์ ์์ธ ๊ฒฝ์ฐ, ํฐ์์ธ ๊ฒฝ์ฐ ๋๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
์ฒด์คํ์ ํฌ๊ธฐ๊ฐ 8*8๋ณด๋ค ํด ๊ฒฝ์ฐ ์ฒด์คํ์ ์๋ผ 8*8 ํฌ๊ธฐ๋ก ๋ง๋ค์ด์ผ ํ๋๋ฐ, ์๋ฅธ ํ ์ฒด์คํ์ฒ๋ผ ์์ ์น ํ ๋ ๊ฐ์ฅ ์ ๊ฒ ์ ์ฌ๊ฐํ์ ์น ํ๋ ํ์๋ฅผ ๊ตฌํด์ผ ํ๋ค.
๊ฐ์ฅ ์ ๊ฒ ์ ์ฌ๊ฐํ์ ์น ํ๋ ค๋ฉด ์ด๋ ๋ถ๋ถ์ ์๋ผ์ผ ํ๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์, (0, 0) ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅผ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ธํด ๊ฐ์ฅ ์ ์ ํ์๋ฅผ ๊ตฌํ๋ค.
int board(char[][], int x, int y)
์ ๋ ฅ๋ฐ์ char[][] ๋ฐฐ์ด๊ณผ ๊ฒ์ฌํ x, y ์ขํ๋ฅผ ์ ๋ ฅํ๋ฉด ํจ์ ์์ ์กด์ฌํ๋ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ๊ฒ์ ์์ธ ์ฒด์คํ, ํฐ์์ธ ์ฒด์คํ ๋ ๊ฐ์ ๋น๊ตํ์ฌ ๋ค๋ฅธ ๋ถ๋ถ์ด ๋ ์ ์ ์๋ฅผ ๋ฐํ
=> Math.min() ๋ฉ์๋ ์ฌ์ฉ
1. ์ ๋ ฅ๋ฐ์ n, m ํฌ๊ธฐ์ char[][] myBoard 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ณด๋์ ์ํ๋ฅผ ์ ์ฅ
2. min์ (0, 0) ์์น์์์ ํ์๋ก ์ด๊ธฐํ
3. ์ด์ค๋ฃจํ๋ฅผ ํตํด ๋ณด๋๋ฅผ ์๋ฅผ ์ ์๋ ์ผ์ชฝ ์ ๊ผญ์ง์ ์ขํ๋ฅผ (0, 0) ๋ถํฐ board()๋ฅผ ํธ์ถํ๊ณ , min๊ณผ ๋น๊ตํ์ฌ ๋ ์์ ํ์๋ฅผ min์ ์ ์ฅ
4.min ์ถ๋ ฅ
import java.io.*;
import java.util.StringTokenizer;
public class B1018 {
static int board(char[][] myBoard, int x, int y) {
char[][] BBoard = {
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
};
char[][] WBoard = {
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
{'W','B','W','B','W','B','W','B'},
{'B','W','B','W','B','W','B','W'},
};
int countB = 0;
int countW = 0;
for(int i = 0; i < 8; i++) {
for(int j = 0; j < 8; j++) {
if(BBoard[i][j] != myBoard[x + i][y + j]) {
countB++;
}
if(WBoard[i][j] != myBoard[x + i][y + j]) {
countW++;
}
}
}
return Math.min(countW, countB);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
char[][] myBoard = new char[n][m];
for(int i = 0; i < n; i++) {
String s = br.readLine();
for(int j = 0; j < m; j++) {
myBoard[i][j] = s.charAt(j);
}
}
int min = board(myBoard, 0, 0);
for(int i = 0; i <= n - 8; i++) {
for(int j = 0; j <= m - 8; j++) {
min = min < board(myBoard, i, j) ? min : board(myBoard, i, j);
}
}
System.out.println(min);
}
}