n = int(input())
def solve(n):
arr = [[1 for _ in range(10)] for _ in range(n)]
for z in range(1,n):
for i in range(10):
if i == 0: arr[z][i] = sum(arr[z-1])
else: arr[z][i] = sum(arr[z-1][i:])
return(sum(arr[n-1])%10007)
print(solve(n))
어떻게 풀어야할지 감이 안잡힐때, 노트에 수도코드를 쓰면서 차분하게 정리하니 머릿속에서 깔끔하게 이해가 된다.
다이나믹 프로그래밍의 핵심은 이전에 사용했던 결과를 다시 사용하여 알고리즘 효율을 높이는 것.
로그인
www.acmicpc.net
'배우는 것들 > python' 카테고리의 다른 글
백준 1260- DFS와 BFS (0) | 2022.07.25 |
---|---|
백준 1463 - 1로 만들기 (0) | 2022.07.06 |
백준 1932번 정수삼각형 (DP) (0) | 2022.06.16 |
동아리 프로젝트 - 산업별 매출에 대한 COVID-19의 영향 (0) | 2022.06.15 |
return과 print의 차이 (0) | 2022.06.13 |