[백준/C++] 1074번 Z

2021. 4. 9. 23:28알고리즘/재귀

728x90
반응형

문제: www.acmicpc.net/problem/1074

 

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서

www.acmicpc.net

 

 

문제풀이

 

재귀 문제이다.

 

 

코드

#include <iostream>

using namespace std;

int func(int x, int y, int k){
    if(k==0) return 0;

    int half = 1<<(k-1);

    if(x < half && y < half)
        return func(x,y,k-1);
    else if(x < half && y >= half)
        return half*half + func(x,y-half,k-1);
    else if(x >= half && y < half)
        return 2*half*half + func(x-half,y,k-1);
    else
        return 3*half*half + func(x-half,y-half,k-1);
}

int main(){
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int n,r,c;
    cin>>n>>r>>c;

    cout<<func(r,c,n);
    
    return 0;
}

 

 

결과

 

 

 

728x90
반응형