반응형
https://www.acmicpc.net/problem/1074
import sys
ssr = sys.stdin.readline
def sol(n,r,c):
global result
if n==0:
return
if r<2**(n-1) and c<2**(n-1):
sol(n-1,r,c)
elif r<2**(n-1) and c>=2**(n-1):
result += (2**(n-1))*(2**(n-1))
sol(n-1,r,c-2**(n-1))
elif r>=2**(n-1) and c<2**(n-1):
result += 2*((2**(n-1))*(2**(n-1)))
sol(n-1,r-2**(n-1),c)
else:
result += 3*((2**(n-1))*(2**(n-1)))
sol(n-1,r-2**(n-1),c-2**(n-1))
return
n,r,c = map(int, ssr().split())
result = 0
sol(n,r,c)
print(result)
이번엔 재귀로 풀어봤습니다. 작년에 재귀가 참 어렵다고 하소연을 했던 기억이 있는데요. 여전히 어렵긴 합니다... 그래도 그 때 보다는 잘쓰고 있겠죠(숱한 백트래킹으로 단련이 되었다고나 할까요 허허...). 사실 이 문제는 단계별 풀어보기에 재귀 마지막 문제랑 상당히 비슷합니다. 작은 단위의 상황과 큰 단위의 상황이 동일하기 때문에 어떻게든 같은 조건으로 정리할 방법만 찾아내면 남은 건 구현뿐인 문제랄까요. 뭐 이렇게 쉽다는 듯이 얘기하곤 있지만 저도 고민을 많이 해서...
여러분들은 저보단 훨씬 잘하시리라 믿습니다.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]1769번 풀이 (0) | 2022.05.18 |
---|---|
[BOJ][Python]1107번 풀이 (0) | 2022.03.01 |
[BOJ][Python]백준 1012 풀이 (0) | 2022.02.23 |
[BOJ][Python]18111번 풀이 (0) | 2022.02.22 |