ํ ๋งํ (7569๋ฒ)
Gold 5
#๊ทธ๋ํ ์ด๋ก #๊ทธ๋ํ ํ์ #๋๋น ์ฐ์ ํ์
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
๋น์ทํ ๋ฌธ์ ์ธ ํ ๋งํ (7576)์๋ ์์๋ฅผ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋ฐ์ 3์ฐจ์์ผ๋ก ์์ ํด์ผ ํ๋ ๊ฒ์ด ๋ค๋ฅด๋ค.
์ ๋ ฅ์ ๋ฐ์ ๋, ๋ฏธ๋ฆฌ ์์ฑํ ArrayDeque์ 1(์ต์ ํ ๋งํ )์ด ๋ค์ด ์์ผ๋ฉด x, y, z, 0์ ๋ฆฌ์คํธ๋ก ๋ฐ์์ ๋ฃ์ด ์ค๋ค.
x, y, z๋ ์ต์ ํ ๋งํ ์ ์ขํ์ด๊ณ , 0์ ๊ฒฝ๊ณผํ ๋ ์ง๋ฅผ ๋ปํ๋ค. ๋์ค์ 0์ ํ๋์ฉ ๋ํด ๊ฐ๋ฉด์ ๊ฒฝ๊ณผ ๋ ์ง๋ฅผ ์ฒดํฌํ ๊ฒ์ด๋ค.
3์ฐจ์ ๋ฆฌ์คํธ์ ์ ๋ ฅ๊ฐ์ ๋ชจ๋ ๋ฃ์ด ์ฃผ๊ณ ๋์, ํ ๋งํ ๋ฅผ bfs๋ฅผ ์ด์ฉํด ํ์ฌ ํ ๋งํ ์ ์์น๋ฅผ ๋ด์ ArrayDeque์ ์๋ ๊ฐ์ ํ๋์ฉ ๋นผ๋ฉด์ ๋บ ๊ฐ์ x, y, z์์ ์, ๋ค, ์ค๋ฅธ์ชฝ, ์ผ์ชฝ, ์, ์๋์ ํด๋นํ๋ ํ ๋งํ ๋ค์ ํ์ธํด์ ๋ ์ต์ ํ ๋งํ (0)์ด๋ฉด, ํ ๋งํ
๋ฅผ ์ต์ ์ํ(1)๋ก ๋ณ๊ฒฝํ๊ณ ํ์ ์ด๋ํ x, y, z๊ฐ์ ์ด์ ์ ArrayDeque์์ ๋บ ๊ฐ์ ํ๋ฃจ๊ฐ ์ง๋ฌ๋ค๋ ๋ป์ธ 1์ ๋ํ ๊ฐ์ 4๋ฒ์งธ ์ถ๊ฐ๊ฐ์ ๋ฃ์ด์ ArrayDeque์ ๋งจ ์์ ๋ฃ์ด ์ค๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.ArrayDeque
private val queue = ArrayDeque<List<Int>>()
private var box = arrayOf<Array<MutableList<Int>>>()
private val dx = listOf(-1, 1, 0, 0, 0, 0)
private val dy = listOf(0, 0, -1, 1, 0, 0)
private val dz = listOf(0, 0, 0, 0, -1, 1)
private var currentDay = 0
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val (x, y, z) = readLine().split(" ").map { it.toInt() }
box = Array(z) { Array(y) { mutableListOf() } }
for (i in 0 until z) {
for (j in 0 until y) {
val tomato = readLine().split(" ").map { it.toInt() }
box[i][j].addAll(tomato)
for (k in tomato.indices) {
if (tomato[k] == 1) {
queue.addFirst(listOf(k, j, i, 0))
}
}
}
}
bfs()
for (i in box.indices) {
for (j in box[i].indices) {
if (box[i][j].contains(0)) {
currentDay = -1
break
}
}
}
println(currentDay)
}
private fun bfs() {
while (queue.isNotEmpty()) {
val data = queue.removeLast()
currentDay = data.last()
find(data[0], data[1], data[2])
}
}
private fun find(x: Int, y: Int, z: Int) {
for (i in dx.indices) {
val mx = x + dx[i]
val my = y + dy[i]
val mz = z + dz[i]
if (mz in box.indices && my in box[0].indices && mx in box[0][0].indices) {
if (box[mz][my][mx] == 0) {
box[mz][my][mx] = 1
queue.addFirst(listOf(mx, my, mz, currentDay + 1))
}
}
}
}
๋ฌธ์ ํ์ด
์ ๋ ฅ๊ฐ์ ์ ์ฅํ 3์ฐจ์ ๋ฆฌ์คํธ box์ ์ ๋ ฅ๊ฐ์ ์ ์ฅํ๊ณ , ์ด๊ธฐ์ ์ต์ ํ ๋งํ ์ ์ขํ๋ฅผ ์ ์ฅํ queue(ArrayDeque)๋ฅผ ์์ฑํด ์ค๋ค.
์ต์ ํ ๋งํ ์ ์ขํ์์ ์, ์๋, ์ค๋ฅธ์ชฝ, ์ผ์ชฝ, ์, ๋ค์ ํด๋นํ๋ ์ฃํ๋ค์ ํ ๋งํ ์ ๊ฐ์ ํ์ธํ๊ธฐ ์ํด dx, dy, dz๋ฅผ ์์ฑํ๋ค.
์ ๋ ฅ๊ฐ์ box์ ์ ์ฅํ๊ณ , queue์ ์ด๊ธฐ์ ์ต์ ํ ๋งํ ์ ์์น๋ฅผ ์ ์ฅํ๊ณ ๋๋ฉด bfs ํจ์๋ฅผ ์ํํ๋ค.
bfs์์๋ ๋ค๋ฅธ ๋ฌธ์ ์์ bfs๋ฅผ ๊ตฌํํ๋ฏ์ด queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํด ์ฃผ๊ณ , queue์์ ๋ฝ๋ ๋ฐ์ดํฐ๋ ํ์ฌ queue์ ๋ง์ง๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์ค๋ค(์ด์ ๋ ๋์ค์ ์ค๋ช ).
ํ์ฌ ๋ ์ง๋ฅผ data์ ๋ง์ง๋ง ๊ฐ์ผ๋ก ์ค์ ํ๋ค.
๊ทธ๋ค์ x, y, z๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ find ํจ์๋ฅผ ์ํํ๋ค.
find ํจ์์์๋ dx, dy, dz๋ฅผ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค ๊ฐ๊ฐ ์ด๋ํ ๊ฐ์ mx, my, mz๋ฅผ ์์ฑํด ์ฃผ๊ณ ๊ฐ ์ด๋ํ ๊ฐ์ด 3์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ๋์ง ์๋์ง ํ์ธ ํ, ๋ ์ต์ ํ ๋งํ (0)๊ฐ ์์ผ๋ฉด ๊ทธ ๊ฐ์ 1(์ต์)๋ก ๊ต์ฒดํ๊ณ , ๊ต์ฒด๋ ํ ๋งํ ์ ์ขํ์ ํ์ฌ ๋ ์ง์ 1์ ๋ํ ๊ฐ์ queue์ ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ๋ฃ์ด ์ค๋ค.
queue์ ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ๋ฃ์ด์ฃผ๋ ์ด์ ๋
์ฒซ ๋ฒ์งธ ๊ฐ์ ์๊ฐ์ด ์ง๋ ์ต์ ํ ๋งํ ์ ์ขํ๊ฐ ์ฃผ์ด์ง๊ณ , ๋ค๋ก ๊ฐ์๋ก ์ต์ ์ง ์ค๋๋ ํ ๋งํ ๊ฐ ์กด์ฌํ ๊ฒ์ด๋ค.
๋ง ์ต์ ํ ๋งํ ๊ฐ ๋์ค์ ๋น ์ง ๊ฒ์ด๊ณ , ์ต์ ์ง ์ค๋๋ ํ ๋งํ ๊ฐ ๋จผ์ ๋น ์ง๊ฒ ๋ ๊ฒ์ด๋ค.
์ด๊ธฐ์ 0์ผ๋ก ์ค์ ๋ ํ ๋งํ ๊ฐ ๋จผ์ ๋น ์ง๊ณ ๊ทธ๋ค์ 1์ผ ์ฐจ์ ์ต์ ํ ๋งํ ๊ฐ ๋น ์ง๋ ์์ด๋ค.
๋ชจ๋ ํ ๋งํ ๋ฅผ ๋ ์ง ์์๋๋ก ๋นผ๊ณ ๋๋ฉด bfs๊ฐ ์ข ๋ฃ๋๊ณ , ์ต์ข ์ ์ธ ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต๋ ๋ฐ ๊ฑธ๋ฆฐ ๋ ์ง์ธ currentDay๋ฅผ ์ถ๋ ฅํ๋ฉด ์ ๋ต์ด ๋๋ค.
ํ์ง๋ง ํ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํ๋๋ฐ, ๋ ์ง๊ฐ ์๋ฌด๋ฆฌ ์ง๋๋ ํ ๋งํ ๊ฐ ์ ์ต๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค.
2์ค for๋ฌธ์ผ๋ก 3์ฐจ์ ๋ฆฌ์คํธ์ ๊ฐ๋ค์ ๋ชจ๋ ํ์ธํด ์ฃผ๊ณ , ํ๋๋ผ๋ ๋ ์ต์ ํ ๋งํ (0)๊ฐ ์์ผ๋ฉด currentDay๋ฅผ -1๋ก ๋ฐ๊ฟ์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
๋น์ทํ ๋ฌธ์ ์ Gold 5์ ํ ๋งํ (7576๋ฒ)๋ฅผ ํด๊ฒฐํ ์ฌ๋์ด๋ฉด ์ ๋ ฅ๊ณผ ์ด๋๋ง ์์ ํด ์ฃผ๋ฉด ๊ฝ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ํฌ๊ฒ ์ด๋ ค์ ๋ ์ ์ ์์๋ค.
ํ ๋งํ 7576๋ฒ์ ํด๊ฒฐํ์ง ์์ ์ฌ๋๋ค์ 7576๋ฒ์ ๋จผ์ ํด๊ฒฐํ๊ณ ์ด ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ ๋์์ด ๋ ๊ฒ์ด๋ค. 7576๋ฒ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ง ์ฐ๊ธฐ์ ๋ ์ฝ๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Gold' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, G1] ๋ฐฑ์ค 1300๋ฒ K๋ฒ์งธ ์ (0) | 2024.09.09 |
---|---|
[Kotlin, G5] ๋ฐฑ์ค 16928๋ฒ ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2024.08.12 |
[Kotlin, G5] ๋ฐฑ์ค 1013๋ฒ Contact (0) | 2024.08.07 |
[Kotlin, G5] ๋ฐฑ์ค 1011๋ฒ Fly me to the Alpha Centauri (0) | 2024.07.30 |
[Kotlin, G3] ๋ฐฑ์ค 2812๋ฒ ํฌ๊ฒ ๋ง๋ค๊ธฐ (0) | 2024.07.29 |