하다보니
1074번-Z 본문
#include<bits/stdc++.h>
using namespace std;
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 half * half * 2 + func(n - 1, r - half, c);
if (r >= half && c >= half)return half * half * 3 + func(n - 1, r - half, c - half);
}
int main() {
int n, r, c;
cin >> n >> r >> c;
cout<<func(n, r, c);
}
귀납적인 사고로 재귀에 접근하는 습관. 절차적으로 증명하려 애쓰지 말아라.
- 파이썬
def func(n,r,c):
if n==0:return 0
half=1<<(n-1)
if r<half and c<half:return func(n-1,r,c)
if r<half and c>=half:return half*half+func(n-1,r,c-half)
if r>=half and c<half:return half*half*2+func(n-1,r-half,c)
if r>=half and c>=half:return half*half*3+func(n-1,r-half,c-half)
n,r,c=map(int,input().split())
print(func(n,r,c))
'알고리즘 풀이 > 백준' 카테고리의 다른 글
3015번-오아시스 재결합 (0) | 2022.02.16 |
---|---|
6198번-옥상 정원 꾸미기 (0) | 2022.02.09 |
11729번-하노이 탑 이동 순서 (0) | 2022.02.08 |
5014번-스타트링크 (0) | 2022.02.08 |
5427번-불 (0) | 2022.02.08 |