dev/algorithm
BOJ / 1018번 / 체스판 다시 칠하기 [Golang]
crscnt
2020. 6. 24. 21:00
문제
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
풀이
package main
import (
"bufio"
"fmt"
"math"
"os"
)
func main() {
var n, m int
reader := bufio.NewReader(os.Stdin)
fmt.Fscanln(reader, &n, &m)
var mat = make([]string, n)
for i := 0; i < n; i++ {
fmt.Fscanf(reader, "%v\n", &mat[i])
}
var min = n * m
for i := 0; i < n-7; i++ {
for j := 0; j < m-7; j++ {
var cntChange1 = float64(0)
var cntChange2 = float64(0)
for k := i; k < i+8; k++ {
for l := j; l < j+8; l++ {
if (k+l)%2 == 0 {
if string(mat[k][l]) == "B" {
cntChange1++
} else {
cntChange2++
}
} else {
if string(mat[k][l]) == "B" {
cntChange2++
} else {
cntChange1++
}
}
}
}
if min > int(math.Min(cntChange1, cntChange2)) {
min = int(math.Min(cntChange1, cntChange2))
}
}
}
fmt.Println(min)
}
728x90