풀이
먼저 나는 체스판의 시작이 B,W 총 2가지의 경우로 가정하였다.
또한 체스판의 크기가 9*9로 고정이므로, 우리가 9*9 크기에 체스판에 맞춰서 검사해야 할 경우의 수는
(행의 크기-1)*(열의크기-1) 만큼 검사해야한다.
-> 즉 2 * (행의 크기-1) * (열의 크기 -1) 의 경우의 수가 나온다.
package com.example.codingtest
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.min
fun main(){
val br=BufferedReader(InputStreamReader(System.`in`))
val a=br.readLine()!!.split(' ')
val row=a[0].toInt()
val column=a[1].toInt()
val inputarray = Array(row,{CharArray(column,{'1'})})
// Array(행의 크기, {IntArray(열의 크기, {초기화 값})}
for(i in 0..row-1){ // 행의 크기만큼
val line=br.readLine()
for(j in 0..column-1){ // 열의 크기만큼
inputarray[i][j]=line[j]
}
}
var mincount=10000000
var checkB='B'
var checkW='W'
for(r in 0..1) { // 시작이 W, B 경우의 수 2가지이므로
if(r==1){
checkB='W'
checkW='B'
}
for (k in 0..row - 8) { // 체스판의 크기가 9*9 로 고정이므로, (row-1)*(column-1) 만큼의 검사를 해줘야한다.
for (t in 0..column - 8) {
var count = 0
for (i in 0 + k..7 + k) {
for (j in 0 + t..7 + t) {
if ((i + j) % 2 == 0) {
if (inputarray[i][j] == checkB) {
count++
}
} else {
if (inputarray[i][j] == checkW) {
count++
}
}
}
}
if (count < mincount) {
mincount = count
}
}
}
}
println(mincount)
}