시배's Android
Algorithm | Kotlin 백준 16918 봄버맨 본문
16918번: 봄버맨
첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다.
www.acmicpc.net
private fun main() {
val (r, c, n) = readLine()!!.split(" ").map { it.toInt() }
val x = intArrayOf(-1, 0, 0, 1)
val y = intArrayOf(0, -1, 1, 0)
val a = Array(r) { readLine()!!.toCharArray() }
val b = Array(r) { i -> IntArray(c) { if (a[i][it] == 'O') 3 else 0 } }
val s = StringBuilder()
for (t in 2..n) {
if (t % 2 == 0) {
for (i in 0 until r) {
for (j in 0 until c) {
if (b[i][j] == 0) {
b[i][j] = t + 3; a[i][j] = 'O'
}
}
}
} else {
for (i in 0 until r) {
for (j in 0 until c) {
if (b[i][j] == t) {
b[i][j] = 0; a[i][j] = '.'
repeat(4) {
val h = i + x[it];
val w = j + y[it]
if (h in 0 until r && w in 0 until c && a[h][w] == 'O' && b[h][w] != t) {
b[h][w] = 0; a[h][w] = '.'
}
}
}
}
}
}
}
repeat(r) { s.append(a[it]).append('\n') }
print(s)
}
'Algorithm' 카테고리의 다른 글
Algorithm | 백준 Kotlin 15664 N과 M (10) (0) | 2023.09.16 |
---|---|
Algorithm | 백준 Kotlin 2776 암기왕 (0) | 2023.09.16 |
Algorithm | Kotlin 백준 1059 좋은 구간 (0) | 2023.09.11 |
Algorithm | Kotlin 백준 17144 미세먼지 안녕! (0) | 2023.09.04 |
Algorithm | Kotlin 백준 9613 GCD 합 (0) | 2023.09.04 |