728x90
풀이
사분면을 탐색해 방문횟수를 반환하는 방식보다는, 전체 허용 범위내 조건 충족시 출력을 하는 방식으로 풀이했다.
허용 범위가 아니라면, 다른 사분면에 있으므로 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);
}
출처
1074번: Z
한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서
www.acmicpc.net
728x90
'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 |