본문 바로가기

알고리즘/브루트포스(Brute Force)

[백준][1018] 체스판 다시 칠하기

728x90

- https://www.acmicpc.net/problem/1018

 

풀이

1. 8X8 확인을 위한 체스판을 선언한다. 이때 2가지 경우를 선언한다. (0, 0) 이 W로 시작하는 것과 B로 시작하는 것으로 2가지를 선언한다.

2. 입력으로 들어오는 체스판을 8X8 확인 용 체스판과 각각 비교하여 각 char 글자가 다를 경우 count 를 증가 한다.

3. result 에 최소값을 저장한다.

코드

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val (N, M) = br.readLine().split(" ").map { it.toInt() }

    val chess = Array(N) {
        CharArray(M) { '0' }
    }

    for (i in 0 until N) {
        chess[i] = br.readLine().toCharArray()
    }

    val check1 = arrayOf(
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW"
    )

    val check2 = arrayOf(
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB"
    )

    var result = Int.MAX_VALUE

    for (i in 0 until N) {
        for (j in 0 until M) {
            if (i + 7 >= N || j + 7 >= M) continue

            var count = 0
            // check1 과 입력 값 비교
            for (k in 0 until 8) {
                for (l in 0 until 8) {
                    if (check1[k][l] != chess[k + i][l + j]) {
                        count++
                    }
                }
            }

            result = Math.min(result, count)
        }
    }

    for (i in 0 until N) {
        for (j in 0 until M) {
            if (i + 7 >= N || j + 7 >= M) continue

            var count = 0
            // check2 과 입력 값 비교
            for (k in 0 until 8) {
                for (l in 0 until 8) {
                    if (check2[k][l] != chess[k + i][l + j]) {
                        count++
                    }
                }
            }

            result = Math.min(result, count)
        }
    }

    println(result)
}

 

728x90

'알고리즘 > 브루트포스(Brute Force)' 카테고리의 다른 글

[백준][2231] 분해 합  (0) 2024.05.02
[백준][2798] 블랙잭  (0) 2024.04.29