PS/Baekjoon Online Judge

[백준 1074] Z [C]

kimyoungrok 2021. 8. 1. 18:28

백준 - 1074


풀이

사분면을 탐색해 방문횟수를 반환하는 방식보다는, 전체 허용 범위내 조건 충족시 출력을 하는 방식으로 풀이했다.

허용 범위가 아니라면, 다른 사분면에 있으므로 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

'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