[백준] 성 지키기 (1236)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.
» 출력
첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
4 4 …. …. …. …. |
4 |
문제 풀이1
import kotlin.math.max
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
var (N, M) = readLine().split(" ").map { it.toInt() }
var castle = Array(N) { readLine().toCharArray() }
var row = BooleanArray(M) { false }
var col = BooleanArray(N) { false }
for (i in 0 until N) for (j in 0 until M) {
if (castle[i][j] == 'X') {
col[i] = true
row[j] = true
}
}
val c = col.count { !it }
val r = row.count { !it }
println(max(r, c))
}
// N : 4, M : 6
// X.....
// .X....
// ..X...
// ...X..
// col = { t, t, t, t }
// row = { t, t, t, t, f, f }
// N : 6, M : 4
// X...
// .X..
// ..X.
// ...X
// ....
// ....
// col = { t, t, t, t, f, f }
// row = { t, t, t, t }
// N : 2, M : 2
// X.
// .X
// col = { t, t }
// row = { t, t }
// N : 2, M : 2
// .X
// X.
// col = { t, t }
// row = { t, t }
// N : 2, M : 4
// ..X.
// X...
// col = { t, t }
// row = { t, f, t, f }