💻 C++ 기반
✔️ 재귀 함수의 형태를 짜는 게 어려울 수 있음
✔️ 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;
}