반응형
[ Contents ]
1. 문제 (링크 참조)
13699번: 점화식
다음의 점화식에 의해 정의된 수열 t(n)을 생각하자: t(0)=1 t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0) 이 정의에 따르면, t(1)=t(0)*t(0)=1 t(2)=t(0)*t(1)+t(1)*t(0)=2 t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5 ... 주어진 입력 0 ≤ n
www.acmicpc.net
2. 문제 풀이
t(0) = 1
t(n) = t(0)*t(n-1) + t(1)*t(n-2) + ... + t(n-1)*t(0)
위와 같은 점화식이 주어집니다. 점화식에 따라 t(n)을 구해야 합니다.
2022.02.12 - [Algorithm] - [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP)
[Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP)
[ Contents ] 1. 동적 프로그래밍(Dynamic Programming, 동적계획법) 동적계획법(Dynamic programming, DP): 작은 문제들에 대한 결과를 배열(리스트)에 저장하고, 이를 이용해서 입력 크기가 더 큰 문제를 점진..
star7sss.tistory.com
이전에 계산했던 값을 반복해서 사용하는 구조입니다. 따라서 메모이제이션 해두고, 다음 항을 구할 때 사용합니다.
3. 코드
# 입력
n = int(input())
# DP
cache = [1, 1, 2]
for i in range(3, n+1):
tmp = 0
for j in range(i):
tmp += cache[j] * cache[i-j-1]
cache.append(tmp)
print(cache[n])
파이썬의 리스트는 '가변'길이를 가지고 있으므로, 굳이 n까지 초기화할 필요는 없습니다. 점차 늘려나가셔도 괜찮습니다.
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 16017 Telemarketer or not? - 파이썬(Python) (0) | 2022.08.29 |
---|---|
[구현/수학] 백준 20976 2 番目に大きい整数 (The Second Largest Integer) - 파이썬(Python) (0) | 2022.08.28 |
[구현/수학] 백준 18330 Petrol - 파이썬(Python) (0) | 2022.08.26 |
[구현/수학] 백준 20353 Atrium - 파이썬(Python) (0) | 2022.08.25 |
[DP/동적계획법] 백준 15486 퇴사 2 - 파이썬(Python) (0) | 2022.08.24 |
댓글