[백준] 1074번

Jeanine·2022년 3월 25일
0

baekjoon

목록 보기
37/120
post-thumbnail

💻 C++ 기반

https://www.acmicpc.net/problem/1074

✔️ 재귀 함수의 형태를 짜는 게 어려울 수 있음
✔️ N이 들어왔을 때 격자판을 4등분 해서 재귀를 각각 상황에 따라 다르게 하기
✔️ r의 좌표와 c의 좌표도 다르게 재귀 함수의 인자로 보내줘야 함

#include <cstdio>

using namespace std;

int recur(int N, int r, int c)
{
    if (N == 0)
    {
        return 0;
    }
    int half = 1<<(N - 1);

    if (r < half && c < half)
        return recur(N - 1, r, c);
    else if (r < half && c >= half)
        return half * half + recur(N - 1, r, c - half);
    else if (r >= half && c < half)
        return 2 * half * half + recur(N - 1, r - half, c);
    else
        return 3 * half * half + recur(N - 1, r - half, c - half);
}

int main()
{
    int N, r, c;
    scanf("%d %d %d", &N, &r, &c);
    printf("%d", recur(N, r, c));

    return 0;
}
profile
Grow up everyday

0개의 댓글