728x90
반응형
https://www.acmicpc.net/problem/1932
Python
n = int(input())
dp = [0]
dp.append(int(input())) # nn==1
cnt = 0
for n in range(1, n):
k = list(map(int, input().split()))
for r in range(1, len(k)+1):
if r == 1:
dp.append(k[r-1] + dp[cnt+r]) # (n-1, r))
#print(dp, dp[cnt+r])
elif r == len(k):
dp.append(k[r-1] + dp[cnt+r-1]) # (n-1, r-1))
#print(dp, dp[cnt+r-1])
else:
dp.append(k[r-1] + max(dp[cnt+r], dp[cnt+r-1]))
cnt += len(k)-1 # 두 번째 전의 끝을 봐야 직전의 항을 건드릴 수 있다
print(max(dp[-n:]))
풀이
상단의 두 항 중 큰 값과 현재 값을 더하는 식으로 진행
https://en.wikipedia.org/wiki/Pascal%27s_triangle
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준][Python] 11729번 하노이탑 이동 순서 - 재귀(하노이탑) (0) | 2021.08.31 |
---|---|
[백준][Python] 색종이 만들기 - 재귀(분할정복) (0) | 2021.08.31 |
[백준][Python] 1780번 종이의개수 - 재귀(분할정복) (0) | 2021.08.29 |
[백준][Python] 1992번 쿼드트리 - 재귀(분할정복) (0) | 2021.08.29 |
[백준][Python] 1991번 트리순회 - 트리 (0) | 2021.08.26 |