BOJ_S4_1018
๐ [S4_1018] ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static char[][] board;
static int N,M;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
// **** input start ****
// ํ
N = Integer.parseInt(st.nextToken());
// ์ด
M = Integer.parseInt(st.nextToken());
board = new char[N][M];
// ์ขํ์
๋ ฅ
for(int i=0; i<N; i++){
String str = br.readLine();
for(int j=0; j<M; j++){
board[i][j] = str.charAt(j);
}
}
// **** input end ****
// ์ฒดํฌํ string
String str1 = "BWBWBWBW";
String str2 = "WBWBWBWB";
int sum = 0;
int min = Integer.MAX_VALUE;
// ๋ชจ๋ ์ขํ ํ์
for(int i=0; i<N; i++){
for(int j=0; j<M; j++){
// ๊ฐ์ง์น๊ธฐ ๋ง์ฝ 8*8 ๋ฐฐ์ด์ ๋ง๋ค์ง ๋ชปํ๋ค๋ฉด ( ๋ฒ์ ์ด๊ณผ ) ํต๊ณผ
if(i+8>N || j+8>M){
continue;
}
sum = rectangle(j,i,str1,str2);
// ์ต์๊ฐ ๊ตฌํ๊ธฐ
min = Math.min(min, sum);
sum = rectangle(j,i,str2,str1);
// ์ต์๊ฐ ๊ตฌํ๊ธฐ
min = Math.min(min, sum);
}
}
System.out.println(min);
} // main end
// sum ๊ณ์ฐ
static int rectangle(int x, int y, String first, String second){
int sum = 0;
// ํ ๋ฒํธ
int temp = 0;
for(int i=y; i<y+8; i++){
// string ์ด ๋ฒํธ
int temp2 = 0;
for(int j=x; j<x+8; j++){
// first check
if(temp % 2 == 0){
// ๋ง์ฝ ๊ฐ์ด ๋ค๋ฅด๋ค๋ฉด ์นด์ดํ
if(board[i][j] != first.charAt(temp2)) sum++;
}
// second check
else{
// ๋ง์ฝ ๊ฐ์ด ๋ค๋ฅด๋ค๋ฉด ์นด์ดํ
if(board[i][j] != second.charAt(temp2)) sum++;
}
// string ์ด ํ๋ฌ์ค
temp2++;
}
// ํ ํ๋ฌ์ค
temp++;
}
return sum;
}
} // class end
๐ค ๋์ ์๊ฐ
๋ฌธ์ ๋ฅผ ์ดํดํ๋๋ฐ ์๊ฐ์ด ์๊ทผํ ๊ฑธ๋ ธ๋ค ใ
ใ
์ฝ๊ฒ ์ดํดํ ์ ์์์ด ใ
๊ทธ๋๋ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ์๊ฐํ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ขํ๋ฅผ ๋๋ฉด์ ์ขํ๊ฐ์ โBWBWBWBWโ, โWBWBWBWBโ ๋ฅผ ๋ฒ๊ฐ์ ํ์ธํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ์๋ฅผ ์ฒดํฌํด ๊ทธ ์๊ฐ ์ต์์ธ ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ชจ๋ ์ขํ ๋๋ฉด์ check ( 8 * 8 ์๋ผ์ )
- 8 * 8 ๋ฒ์๊ฐ board ๋ฒ์๋ฅผ ๋์ผ๋ฉด continue;
- ๊ฐ์์ง ์ฒดํฌ , ๋ค๋ฅด๋ฉด sum++;
- ์ขํ๋ง๋ค sum ์ด๊ธฐํ
- โBWBWBWBWโ, โWBWBWBWBโ ์์ ๋ฐ๊ฟ์ ์ด 2๋ฒ ์งํ

์ฒ์์ ๊ตฌ์์ ์๋ ์ขํ๊ฐ์ด โWโ์ธ์ง โBโ์ธ์ง ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํด์คฌ์๋๋ฐ ํ์ด๋ณด๋ ์์์ขํ์๋ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ด ๊ทธ๋ฅ ๋๋ฒ์ ๊ฒฝ์ฐ ๋ค ๊ตฌํด์ฃผ๊ณ ์ต์๊ฐ์ ๊ตฌํด์ฃผ์๋ค.
์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์๋ ๋ฒ์๋ผ ๋คํ์ด์๋ค.