[백준] #1074 (재귀)

팔랑이·2024년 1월 13일

BOJ

목록 보기
11/12


분할-정복의 구현으로 재귀를 사용하는 문제

기본 케이스 (최소 단위) -> 재귀 호출 -> 결과 통합
기억하기!!!


import sys

N, r, c = map(int, input().split())

def findZ(N, r, c, cnt):
    len = 2 ** N
    half = len // 2
    
    if N == 1:
        if r == 1 and c == 1:
            cnt += 3
        elif r == 1:
            cnt += 2
        elif c == 1:
            cnt += 1
            
        print(cnt)
        return
        
    
    if r>=half and c>=half:
        findZ(N-1, r-half, c-half, cnt + half*half*3)
        
    elif r>=half :
        findZ(N-1, r-half, c, cnt + half*half*2)
        
    elif c>=half:
        findZ(N-1, r, c-half, cnt + half*half)
        
    else:
        findZ(N-1, r, c, cnt)
        
findZ(N, r, c, 0)
profile
정체되지 않는 성장

0개의 댓글