[백준] Z (1074)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 정수 N, r, c가 주어진다.
» 출력
r행 c열을 몇 번째로 방문했는지 출력한다.
제한 사항
1 ≤ N ≤ 15 0 ≤ r, c < 2N
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
2 3 1 | 11 |
3 7 7 | 63 |
5 2 3 | 13 |
5 5 5 | 147 |
6 5 5 | 275 |
7 5 3 | 519 |
2 3 1 | 11 |
3 7 7 | 63 |
15 32767 32767 | 1073741823 |
문제 풀이1
import kotlin.math.pow
fun main() = with(System.`in`.bufferedReader()) {
val (N, r, c) = readLine().split(" ").map { it.toInt() }
var n = 2.0.pow(N).toInt()
var count = 0
var x = 0
var y = 0
while (n > 0) {
n /= 2
if (r < x + n && c < y + n) {
count += n * n * 0
} else if (r < x + n) {
count += n * n * 1
y += n
} else if (c < y + n) {
count += n * n * 2
x += n
} else {
count += n * n * 3
x += n
y += n
}
if (n == 1) {
println(count)
break
}
}
}