💡문제접근
- 재귀 알고리즘으로 어떻게 탐색을 해야할지 정말 고민을 많이 했고 쉽사리 해결방법이 떠오르지 않아서 오랜 시간 고민한 문제였다.
- 재귀 함수 코드 : 재귀 함수의 종료 조건 명시 + 자기 자신을 호출하면서 어떤 탐색을 수행할 것인지
💡코드(메모리 : 31256KB, 시간 : 56ms)
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)
N, r, c = map(int, input().strip().split())
answer = 0
def recursive(N, R, C):
global answer
if R == r and C == c:
print(answer)
sys.exit()
if not (R <= r < R + N and C <= c < C + N):
answer += N * N
return
recursive(N // 2, R, C)
recursive(N // 2, R, C + N // 2)
recursive(N // 2, R + N // 2, C)
recursive(N // 2, R + N // 2, C + N // 2)
result = recursive(2 ** N, 0, 0)
print(result)
💡소요시간 : 1d