문제
소스코드
#include<iostream>
int g_number;
int N = 0, g_x = 0, g_y = 0;
// r,c를 몇 번째 방문하는가?
void Function(int N, int row, int col) {
//작은 단위까지 나눈다.
if (N == 2) {
// 0,0
if (g_x == row && g_y == col) {
std::cout << g_number << "\n";
return;
}
++g_number;
//0,1
if (g_x == row && g_y == col + 1) {
std::cout << g_number << "\n";
return;
}
++g_number;
// 1,0
if (g_x == row + 1 && g_y == col) {
std::cout << g_number << "\n";
return;
}
++g_number;
//1,1
if (g_x == row + 1 && g_y == col + 1) {
std::cout << g_number << "\n";
return;
}
++g_number;
return;
}
Function(N / 2, row, col); //왼쪽
Function(N / 2, row, col + N / 2); //오른쪽
Function(N / 2, row + N / 2, col);//왼쪽아래
Function(N / 2, row + N / 2, col + N / 2);//오른쪽 아래
}
int main() {
std::cin >> N >> g_x >> g_y;
Function(1<<N, 0, 0);
}
후기
재귀 함수에 얼마나 취약한지 알 수 있었다.. 패턴이 보이는 문제였기 때문에 쉽게 풀 수 있을 거라고 생각했지만 생각보다 시간이 걸렸으며 결국에는 다른 사람의 풀이를 참고해서 풀었기에 100% 혼자 푼 게 아니다. 알다가도 모르겠는 게 재귀 함수 문제인 거 같다.
출처 및 레퍼런스
문제 링크:https://www.acmicpc.net/problem/1074
2020.07.07
폰트 색상 및 폰트 변경
'온라인 코딩 > 재귀 호출(Recursive Call)' 카테고리의 다른 글
[백준] 10872번 팩토리얼 (0) | 2020.04.06 |
---|---|
[백준] 17269번 이름궁합 테스트 (0) | 2020.02.24 |
[프로그래머스] 타겟 넘버 (0) | 2020.02.10 |