반응형
https://www.acmicpc.net/problem/1018
모든칸을 한칸씩 돌면서 문자가 바뀌는지 확인하면 최악의 경우의 수를 따져보니까
대충 이렇게 나와서 왠지 그냥 다돌아도 시간초과 안날 것 같아서 다 돌기로 했다.
package main
import (
"bufio"
"fmt"
"os"
)
var writer = bufio.NewWriter(os.Stdout)
var reader = bufio.NewReader(os.Stdin)
func printf(f string, a ...interface{}) { fmt.Fprintf(writer, f, a...) }
func scanf(f string, a ...interface{}) { fmt.Fscanf(reader, f, a...) }
var table [51]string
var n, m int
func toggleC(c *byte) {
if *c == 'W' {
*c = 'B'
} else {
*c = 'W'
}
}
func check(i, j, m int, start byte) (result int) {
c := start
for k := i; k < i+8; k++ {
for l := j; l < j+8; l++ {
if table[k][l] == c {
result++
}
if result >= m {
return
}
toggleC(&c)
}
toggleC(&c)
}
return
}
func min(a, b int) int {
if a < b {
return a
} else {
return b
}
}
func main() {
defer writer.Flush()
scanf("%d %d\n", &n, &m)
for i := 0; i < n; i++ {
scanf("%s\n", &table[i])
}
var minmin = 2500
for i := 0; i <= n-8; i++ {
for j := 0; j <= m-8; j++ {
r := min(check(i, j, minmin, 'W'),
check(i, j, minmin, 'B'))
if minmin > r {
minmin = r
}
}
}
printf("%d\n", minmin)
}
'Study > algorithms' 카테고리의 다른 글
[백준] 2751 수 정렬하기 golang (0) | 2020.01.25 |
---|---|
[백준] 1436 영화감독 숌 (0) | 2020.01.24 |
[백준] 7568 덩치 (0) | 2020.01.22 |
[백준] 2231 분해합 (0) | 2020.01.21 |
[백준] 2798 블랙잭 (0) | 2020.01.21 |