[백준] 1074번 Z ★★★

거북이·2023년 8월 15일
0

백준[실버1]

목록 보기
58/67
post-thumbnail

💡문제접근

  • 재귀 알고리즘으로 어떻게 탐색을 해야할지 정말 고민을 많이 했고 쉽사리 해결방법이 떠오르지 않아서 오랜 시간 고민한 문제였다.
  • 재귀 함수 코드 : 재귀 함수의 종료 조건 명시 + 자기 자신을 호출하면서 어떤 탐색을 수행할 것인지

💡코드(메모리 : 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

0개의 댓글