문제링크:https://www.acmicpc.net/problem/1074
import sys
def z(n, r, c, res):
length = 2 ** n # 배열 길이
half = length // 2 # 사분면으로 만들기위한 배열길이의 절반길이 구하기
if n == 1: # 재귀 종료조건 2x2 4 최소 사분면이 만들어질 경우
print(2 * r + c + res) # row가 늘어나면 도착횟수가 2씩 늘어나고 colunm이 늘어나면 1씩 늘어난다.
return
if r >= half and c >= half: # 4사분면일떄 조건
z(n - 1, r - half, c - half, res + 3 * half * half)
elif r >= half > c: # 3사분면일때 조건
z(n - 1, r - half, c, res + 2 * half * half)
elif r < half <= c: # 2사분면일때 조건
z(n - 1, r, c - half, res + half * half)
else: # 1사분면일때 조건
z(n - 1, r, c, res)
n, r, c = map(int, sys.stdin.readline().split())
z(n, r, c, 0)
'Algorithm > 백준(파이썬)' 카테고리의 다른 글
백준 10971 파이썬(Python) 문제풀이 외판원순회 2 (0) | 2023.04.13 |
---|---|
백준 10819 파이썬(Python) 문제풀이 차이를 최대로 (0) | 2023.04.12 |
백준 9663 파이썬(Python) 문제풀이 N-Queen(N퀸) (0) | 2023.04.12 |
백준 1914 파이썬(Python) 문제풀이 하노이의 탑 (0) | 2023.04.11 |
백준 2628 파이썬(Python) 문제풀이 종이자르기 (0) | 2023.04.11 |