[백준/코틀린] 1074번: Z
골드 5
링크
풀이
(r, c)가 속한 사분면을 찾은 뒤, 이전까지 방문한 칸의 개수를 offset으로 더합니다.
이후 사분면 내부 좌표(r % p, c % p)로 재귀 호출하며 최종 방문 순서를 계산합니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
val n1 = listOf(listOf(0, 1), listOf(2, 3))
fun z(n: Int, r: Int, c: Int, b: Int) {
val p = 1 shl (n - 1)
if (n == 1) println(b + n1[r][c])
else z(n - 1, r % p, c % p, b + p * p * n1[r / p][c / p])
}
fun main() {
val (n, r, c) = readln().split(" ").map { it.toInt() }
z(n, r, c, 0)
}
This post is licensed under CC BY 4.0 by the author.