티스토리 뷰

Algorithm/BOJ

백준 1074번 C++

poopooreum 2023. 7. 21. 15:31
반응형
백준 1074번 Z

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

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을

www.acmicpc.net



정답 코드
#include<iostream>
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 2 * half * half + func(n - 1, r - half, c);
	return 3 * half * half + func(n - 1, r - half, c - half);

}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int n, r, c;
	cin >> n >> r >> c;
	int a=func(n, r, c);
	cout << a;
}

문제 풀이

복잡해보일 수도 있지만 재귀를 이용하여 풀
수 있는 문제입니다. 경우의 수를 나눠서 half변수와
대소 관계를 이용해서 나눈 후 재귀함수를 계속 호출하면 됩니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 1085번 C++  (0) 2023.07.21
백준 1075번 C++  (0) 2023.07.21
백준 1065번 C++  (0) 2023.07.21
백준 1037번 C++  (0) 2023.07.20
백준 1012번 C++  (0) 2023.07.20
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함