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], ", index =", 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], ", index =", cnt+r-1)
else: # 왼,오 중에서 큰 값으로 덧셈하여 진행
dp.append(k[r-1] + max(dp[cnt+r], dp[cnt+r-1]))
#print(dp, max(dp[cnt+r], dp[cnt+r-1]))
cnt += len(k)-1 # 두 번째 전의 끝을 봐야 직전의 항을 건드릴 수 있다
print(max(dp[-n:])) # 마지막 줄에서 최대값 찾기
풀이
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준] [Python] RGB거리 - DP (0) | 2021.06.15 |
---|---|
[백준] [Python] 11726번, 11727번 2xn 타일링 - DP (0) | 2021.06.14 |
[백준] [Python] 2156번 포도주 시식 - DP (0) | 2021.06.10 |
[백준] [Python] 1920번 수 찾기 - 이분 탐색 - [대표예제] (0) | 2021.06.10 |
파이썬 입력값 받아오기 (0) | 2021.06.10 |