풀이
사분면을 탐색해 방문횟수를 반환하는 방식보다는, 전체 허용 범위내 조건 충족시 출력을 하는 방식으로 풀이했다.
허용 범위가 아니라면, 다른 사분면에 있으므로 n*n을 누적해준다.
소스코드
#include <stdio.h>
int r, c, cnt;
void Z(int row, int col, int n){
if (row == r && col == c){
printf("%d\n", cnt);
return;
}
if (r >= row && c >= col && r < row + n && c < col + n) {
Z(row, col, n/2);
Z(row, col + n/2, n/2);
Z(row + n/2, col, n/2);
Z(row + n/2, col + n/2, n/2);
}
else cnt += n*n;
}
int main(){
int N;
scanf("%d %d %d", &N, &r, &c);
Z(0, 0, 1 << N);
}
출처
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 13171] A [C] (0) | 2021.08.01 |
---|---|
[백준 1629] 곱셈 [C] (0) | 2021.08.01 |
[백준 1037] 약수 [C] (0) | 2021.08.01 |
[백준 2525] 오븐 시계 [C] (0) | 2021.08.01 |
[백준 5543] 상근날드 [C] (0) | 2021.07.31 |