[백준] 숫자 정사각형 (1051)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 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)
}