본문 바로가기
알고리즘/백준

[백준] 1074 Z

by 오오오니 2022. 8. 25.

Z 모양 순서대로 방문하기 때문에 재귀호출도 Z 모양으로 해주면 된다.

만약 r과 c가 범위안에 있지 않으면 사각형 범위만큼 답에 더해주면 된다.

방문하는 순서대로 재귀를 하므로 r과 c 보다 나중에 나오는 범위는 더하지 않게 된다.

 

#include<iostream>
#include<cmath>

using namespace std;

int n, r, c;
int cnt;
int temp;
void Z(int N,int y,int x)
{
	//답을 찾으면
	if (r == y && c == x)
	{
		cout << cnt ;
		return;
	}
	if (r >= y&&c >= x&&r < y + N && c < x + N)//범위 안에 있다면 4등분 한다.
	{
		//1->2->3->4 순대로 탐색
		Z(N / 2, y, x);
		Z(N / 2, y, x+N/2);
		Z(N / 2, y + N / 2, x);
		Z(N / 2, y + N / 2, x + N / 2);

	}
	else
	{
		cnt += (N*N);
		
	}
}

int main()
{
	cin >> n >> r >> c;
	temp = pow(2, n);
	
	Z(temp, 0, 0);
	
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 11727 2×n 타일링 2 c++  (0) 2022.09.03
[백준] 1932 정수 삼각형 c++  (0) 2022.09.03
[백준]1062 가르침 c++  (0) 2022.08.19
[백준] 15644 N과M(10) c++  (0) 2022.08.16
[백준] 2447 별찍기 -10  (0) 2022.08.10