몰?.루();
백준 9019번 코틀린 본문
import java.util.LinkedList
fun main() {
repeat(readLine()!!.toInt()) {
val (a, b) = readLine()!!.split(" ").map { it.toInt() }
fun bfs() {
val visited = BooleanArray(10000)
val queue = LinkedList<Pair<Int, String>>()
queue.add(Pair(a, ""))
while (queue.isNotEmpty()) {
val head = queue.poll()
if (head.first == b) { // 종료 조건
println(head.second)
return
}
if (!visited[head.first.d()]) { queue.add(Pair(head.first.d(), head.second + "D")); visited[head.first.d()] = true }
if (!visited[head.first.s()]) { queue.add(Pair(head.first.s(), head.second + "S")); visited[head.first.s()] = true }
if (!visited[head.first.l()]) { queue.add(Pair(head.first.l(), head.second + "L")); visited[head.first.l()] = true }
if (!visited[head.first.r()]) { queue.add(Pair(head.first.r(), head.second + "R")); visited[head.first.r()] = true }
}
}
bfs()
}
}
fun Int.d(): Int = this * 2 % 10000
fun Int.s(): Int = if (this == 0) 9999 else this - 1
fun Int.l(): Int = (this * 10 % 10000) + (this / 1000)
fun Int.r(): Int = (this / 10) + (this % 10 * 1000)
뭔가 복잡한 문제인 척하지만 껍질을 벗겨내보면 사실 단순한 bfs 문제입니다.
'프로그래밍 > 안드로이드, 코틀린' 카테고리의 다른 글
백준 14502 코틀린 (0) | 2022.06.23 |
---|---|
백준 10825번 코틀린 (sortedWith, compareBy) (0) | 2022.03.24 |
코틀린 이진탐색(이분탐색, binary search) (1) | 2022.03.23 |
코틀린 중복 없이 난수(랜덤) 생성 코드 (0) | 2022.03.21 |
백준 19942번 코틀린 + 반례 2개 (1) | 2022.03.20 |
Comments