고민을 좀 한 뒤 BFS로 접근하였다
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
val map = Array(100001) { 0 }
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
//수빈이와 동생의 위치 받기
var (M, K) = readLine().split(" ").map { it.toInt() }
bfs(M,K)
println(map[K])
}
fun bfs(start_: Int, end_: Int) {
var start = start_
var end = end_
var queue = LinkedList<Int>()
queue.offer(start)
while (!queue.isEmpty()) {
start = queue.poll()
if (start == end) break //수빈이와, 동생의 위치가 같으면 종료
if (start - 1 >= 0 && map[start - 1] == 0) { //뒤로 걸을때
queue.offer(start - 1)
map[start - 1] = map[start] + 1
}
if (start + 1 <= 100000 && map[start + 1] == 0) { //앞으로 걸을때
queue.offer(start + 1)
map[start + 1] = map[start] + 1
}
if (start * 2 <= 100000 && map[start *2 ] == 0) { //순간이동 할때
queue.offer(start * 2)
map[start *2] = map[start] + 1
}
}
}
네이버 블로그에서 티스토리로 넘어왔다.
그동안 나 자신을 너무 놓고있었지만
초심을 바로잡고 제대로 꾸준히 해야겠다.
'알고리즘 > 그래프 탐색' 카테고리의 다른 글
백준 1012번 - 유기농 배추 (코틀린, kotlin) (0) | 2020.11.06 |
---|---|
백준 2606번 - 바이러스 (0) | 2020.11.06 |
백준 2667번 단지 번호 붙이기 - Kotlin (0) | 2020.11.04 |
백준 2178번 미로 탐색 - kotlin (0) | 2020.11.04 |
백준 1260번 DFS와 BFS - kotlin (0) | 2020.11.04 |
댓글