본문 바로가기
코딩연습

[백준] 숨바꼭질 (1697)(Kotlin)

by 유줘니 2020. 1. 29.

원본 문제 : 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]

}

 

 

'코딩연습' 카테고리의 다른 글

[배준] 바이러스 (2606)(Kotlin)  (0) 2020.01.30
[백준] 플로이드 (11404)(Kotlin)  (0) 2020.01.30
[백준] 토마토 (7576)(Kotlin)  (0) 2020.01.29
[백준] DFS와 BFS (1260)(Kotlin)  (0) 2020.01.29
[백준] 미로 탐색(2178)(Kotlin)  (0) 2020.01.22

댓글