[백준/코틀린] 1074번: Z
골드 5
링크
풀이
Z모양 격자의 각 사분면 또한, 동일한 Z모양 구조를 갖습니다.
(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.