재귀함수를 이용해서 사분면? 관련 그래프를 푸는 방법을 알아보았다.
int func(int n, int r, int c) {
if (n==0)return 0;
int half = 1<<(n-1);
if(r< half && c<half) return func(n-1,r,c);
if(r< half && c>= half)return half*half + func(n-1,r,c-half);
if(r>= half && c<half) return 2*half*half + func(n-1,r-half,c);
if(r>=half && c>=half) return 3 * half*half + func(n-1,r-half,c-half);
}
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
int n,r,c; cin >> n>>r>>c;
cout << func(n,r,c);
}
백준 Z
사실 아직까지 완벽하게 알지는 못한다.
재귀를 이용해서 사분면을 탐색할때에는
행, 열, 사이즈(x^n 의 형태로 제공)
2분면일때는 c-half를 해야한다.
half가 의미하는 것은 이제 사분면을 쪼개는 기준? 만약에 사분면의 생기는 기준이 2^n이라고 가정하고 n이 3이라고 가정하면
그 다음 쪼개는 기준은 2^2가 된다. 4*4사이즈의 박스로 나누고 해당 안 쪽엔 16개의 데이터가 들어갈 수 있는 형태가 된다.
재귀함수는 풀면 풀수록 어렵다… 너무 싫…다…
이제 이번주 수요일만 지나면 공부에 집중할 수 있게 된당. 빨리 지나갔으면 좋겠따
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL