몰?.루();
백준 1074 코틀린 본문
import kotlin.math.pow
fun main() {
val (n, r, c) = readln().split(" ").map { it.toInt() }
println(find(2.0.pow(n).toInt(), r, c))
}
fun find(l: Int, r: Int, c: Int): Int { // l은 한 변의 길이
if (r == 0 && c == 0) {
return 0
} else if (r == 0 && c == 1) {
return 1
} else if (r == 1 && c == 0) {
return 2
} else if (r == 1 && c == 1) {
return 3
}
if (r < l / 2 && c < l / 2) { // 왼쪽 위 사분면
return find(l / 2, r, c)
} else if (r < l / 2 && c >= l / 2) { // 오른쪽 위 사분면
return ((l / 2) * (l / 2) * 1) + find(l / 2, r, c - (l / 2))
} else if (r >= l / 2 && c < l / 2) { // 왼쪽 아래 사분면
return ((l / 2) * (l / 2) * 2) + find(l / 2, r - (l / 2), c)
} else { // 오른쪽 아래 사분면
return ((l / 2) * (l / 2) * 3) + find(l / 2, r - (l / 2), c - (l / 2))
}
}
재귀함수로 분할 정복해야 한다는 아이디어는 떠올렸지만 거기서 막혀서 한참을 헤맸다.
'프로그래밍 > 안드로이드, 코틀린' 카테고리의 다른 글
백준 1722 코틀린 (0) | 2022.10.31 |
---|---|
백준 15683번 코틀린 (0) | 2022.10.28 |
백준 1715 코틀린 (0) | 2022.09.29 |
코틀린 오류 해결법 Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.7.1, expected version is 1.5.1. (0) | 2022.09.02 |
백준 14502 코틀린 (0) | 2022.06.23 |
Comments