[백준] 숫자 정사각형 (1051)(kotlin)

문제 설명

백준 1051번 문제 링크

입력 및 출력

» 입력

첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.

» 출력

첫째 줄에 정답 정사각형의 크기를 출력한다.

예제 입출력(테스트케이스)

입력 출력
3 5
42101
22100
22101
9
1 1
1
1
5 5
40013
10077
88888
66661
91002
4

문제 풀이1

import kotlin.math.max
import kotlin.math.min

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (n, m) = readLine().split(" ").map { it.toInt() }
    val map = Array(n) { readLine().toCharArray() }
    var max = 0

    for (i in 0 until n) {
        for (j in 0 until m) {
            val size = min(m - j, n - i)

            for (k in size downTo 1) {
                if (map[i][j] == map[i + k - 1][j + k - 1] &&
                    map[i][j] == map[i][j + k - 1] &&
                    map[i][j] == map[i + k - 1][j]) {
                    max = max(k * k, max)
                }
            }
        }
    }

    println(max)
}