코딩연습
[백준] 숨바꼭질 (1697)(Kotlin)
유줘니
2020. 1. 29. 20:07
원본 문제 : https://www.acmicpc.net/problem/1697
문제 참고 : https://ggmouse.tistory.com/361
<첫번째> 실패
인텔리제이에서는 문제 없이 작동하나, 백준사이트 채점시 런타임 에러 발생
import java.io.*
import java.util.*
var arr: IntArray = intArrayOf()
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val twoDots = readLine().split(" ")
val start = twoDots[0].toInt()
val dest = twoDots[1].toInt()
arr = IntArray(dest*2 + 1)
for (i in arr.indices)
arr[i] = 0
println(bfs(start, dest))
}
fun bfs(start: Int, dest: Int): Int {
val queue: Queue<Int> = LinkedList<Int>()
queue.add(start)
while ( !queue.isEmpty() ) {
val dq = queue.poll()
if ( dq==dest )
break
if ( dq+1 < arr.size && arr[dq+1] == 0 ) {
queue.add(dq+1)
arr[dq+1] = arr[dq] + 1
}
if ( dq-1 >= 0 && arr[dq-1] == 0 ) {
queue.add(dq-1)
arr[dq-1] = arr[dq] + 1
}
if ( dq*2 < arr.size && arr[dq*2] == 0 ){
queue.add(dq*2)
arr[dq*2] = arr[dq] + 1
}
}
return arr[dest]
}