https://www.acmicpc.net/problem/2178
import kotlin.collections.ArrayDeque
val dx = arrayOf(-1,1, 0,0)
val dy = arrayOf(0, 0, -1, 1)
var N = 0
var M = 0
fun main() {
val (n, m) = readLine()!!.split(" ").map { it.toInt() }
N = n
M = m
val maze = Array(n) { // 2차원 배열 입력
readLine()!!.map { it - '0' }.toIntArray()
}
println(bfs(0,0, maze))
}
fun bfs(x:Int, y:Int, maze: Array<IntArray>): Int{
var queue = ArrayDeque<Pair<Int, Int>>()
queue.add(Pair(x, y))
while(queue.isNotEmpty()){
var (x, y) = queue.removeFirst()
for(d in 0 until 4){
val nx = x + dx[d]
val ny = y + dy[d]
if(nx in 0 until N && ny in 0 until M && maze[nx][ny] == 1){
maze[nx][ny] = maze[x][y] + 1
queue.add(Pair(nx, ny))
}
}
}
return maze[N-1][M-1]
}
728x90
'코테 > 코딩테스트 대비 Kotlin' 카테고리의 다른 글
백준 13023 ABCDE Kotlin dfs (0) | 2023.08.21 |
---|---|
백준 2606 바이러스 Kotlin Dfs (0) | 2023.08.20 |
프로그래머스 숫자 짝꿍 시간초과 해결 (0) | 2023.08.20 |
Kotlin 조합(Combination) (0) | 2023.08.20 |
Kotlin 두 개의 배열의 요소가 같은지 아는 방법 (0) | 2023.08.19 |