April 13, 2021 ( last updated : April 13, 2021 )
분할정복
재귀
https://github.com/sneakstarberry/
[백준] 1074번 Z
표 Z자로 탐색 했을 때 r행 c열을 몇번째로 탐색하는지 구하는 문제이다.
2차원 배열을 4분면으로 나누고 지속적으로 r행 c열이 몇 사분면에 속하는지 구할 수 있다면 풀 수 있는 문제입니다.
#include <cmath>
#include <iostream>
using namespace std;
int main() {
long long n, r, c;
cin >> n >> r >> c;
long long ans = 0;
long long y = pow(2, n) / 2;
long long x = y;
while (n--) {
long long temp = pow(2, n) / 2;
long long skip = pow(4, n);
if (r < y && c < x) {
x -= temp;
y -= temp;
} else if (r < y && x <= c) {
x += temp;
y -= temp;
ans += skip;
} else if (y <= r && c < x) {
x -= temp;
y += temp;
ans += skip * 2;
} else {
x += temp;
y += temp;
ans += skip * 3;
}
}
cout << ans;
return 0;
}
Originally published April 13, 2021
Latest update April 13, 2021
Related posts :