티스토리 뷰

문제
 

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

'dev > algorithm' 카테고리의 다른 글

BOJ / 2750번 / 수 정렬하기 [Golang]  (0) 2020.06.26
BOJ / 1436번 / 영화감독 숌 [Golang]  (0) 2020.06.25
BOJ / 7568번 / 덩치 [Golang]  (0) 2020.06.23
BOJ / 2231번 / 분해합 [Golang]  (0) 2020.06.22
BOJ / 2798번 / 블랙잭 [Golang]  (0) 2020.06.21
댓글