๋ฌธ์
https://leetcode.com/problems/shortest-path-in-binary-matrix/description/
์ฃผ์ด์ง n x n ์ด์งํ๋ ฌ์ธ grid์์, ๋ฐฐ์ด์ ๊ฐ์ฅ ์งง์ Clear Path์ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ๋ผ. ๋ง์ฝ Clear Path๊ฐ ์๋ค๋ฉด, -1์ ๋ฐํํ์ฌ๋ผ.
์ด์งํ๋ ฌ์์์ Clear Path๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ (0, 0) ์ขํ์์ (n-1, n-1) ์ขํ๊น์ง์ ๊ฒฝ๋ก ์ด๋ค.
์กฐ๊ฑด
- ๋ฐฉ๋ฌธํ๋ ๋ชจ๋ ์ขํ์ ๊ฐ์ 0์ด๋ค.
- ๊ฒฝ๋ก์์ ๋ชจ๋ ์ธ์ ํ ์ขํ๋ 8๋ฐฉํฅ(์, ํ, ์ข, ์ฐ, ์ฐ์, ์ฐํ, ์ข์, ์ขํ)์ผ๋ก ์ฐ๊ฒฐ๋์ด์๋ค.
Clear Path์ ๊ธธ์ด๋ ๊ฒฝ๋ก ๋ด ๋ฐฉ๋ฌธํ ์ขํ์ ์ ์ด๋ค.
ํ์ด
์ ํ์ ์ธ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ BFS ๋ฌธ์ : Queue ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋น ์ฐ์ ํ์์ ์งํํ๊ณ , ๋ชฉํ์ ๋๋ฌํ๋ฉด STOP!
class LT_1091_ShortestPathInBinaryMatrix {
val di = listOf(-1, -1, -1, 0, 0, 1, 1, 1)
val dj = listOf(-1, 0, 1, -1, 1, -1, 0, 1)
fun shortestPathBinaryMatrix(grid: Array<IntArray>): Int {
var result = -1
val n = grid.size
if(grid[0][0] != 0) return result
val visited = Array(n) { BooleanArray(n) { false } }
val q = ArrayDeque<List<Int>>()
visited[0][0] = true
q.add(listOf(0, 0, 1))
while (q.size > 0) {
val cur = q.poll()
if(cur[0] == n-1 && cur[1] == n-1) {
result = cur[2]
break
}
for(i in 0..7) {
val ni = cur[0] + di[i]
val nj = cur[1] + dj[i]
if(ni in 0 until n && nj in 0 until n) {
if(grid[ni][nj] == 0 && !visited[ni][nj]) {
q.add(listOf(ni, nj, cur[2] + 1))
visited[ni][nj] = true
}
}
}
}
return result
}
}
https://github.com/jeongum/algorithm/blob/master/LT_1091_ShortestPathInBinaryMatrix.kt
๊ฒฐ๊ณผ
์๊ฐ ๋ณต์ก๋&๊ณต๊ฐ ๋ณต์ก๋ ๋ชจ๋ ๋ง์กฑ ! :)
'๐ ์๊ณ ๋ฆฌ์ฆ > ShortestPath' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13549๋ฒ: ์จ๋ฐ๊ผญ์ง3 (0) | 2022.04.03 |
---|---|
[๋ฐฑ์ค] 1238๋ฒ: ํํฐ (JAVA) (0) | 2022.04.03 |
[๋ฐฑ์ค]11780๋ฒ ํ๋ก์ด๋2 (Java) (0) | 2022.02.21 |
[๋ฐฑ์ค] 16118๋ฒ ๋ฌ๋น์ฌ์ฐ (Java) (0) | 2022.02.08 |
[๋ฐฑ์ค] 1753๋ฒ ์ต๋จ๊ฒฝ๋ก (Java) (0) | 2021.08.24 |