Dynamic Programming(DP) - 정수 삼각형[1932]
2022. 4. 7. 00:00ㆍ2022/BaekJoon_알고리즘
Idea
제일 위에서 부터 아래로 범위를 넓히면서 모든 경우의 덧셈을 더하고 최종 말단에 왔을때 최댓값을 구하면 된다.
이때, 인덱스 1부터 idx-1 까지는 더할 수 있는 수의 후보가 이전의 idx번째 수와 idx-1번째 수 총 2개가 있다.
따라서 최댓값을 구하는 문제이므로 큰 값만 뽑아서 현재 idx번째 수에 더해주면 된다.
N = int(input())
fibo = []
for i in range(N):
nList = list(map(int, input().split()))
fibo.append(nList)
for fidx in range(1, N):
for idx in range(len(fibo[fidx])):
if idx == 0:
fibo[fidx][idx] += fibo[fidx-1][0]
elif idx == len(fibo[fidx])-1:
fibo[fidx][idx] += fibo[fidx-1][-1]
else:
fibo[fidx][idx] += max(fibo[fidx-1][idx-1], fibo[fidx-1][idx])
print(max(fibo[N-1]))
'2022 > BaekJoon_알고리즘' 카테고리의 다른 글
DFS - DFS와BFS[1260번] (0) | 2022.04.17 |
---|---|
DFS - 바이러스[2606번] (0) | 2022.04.09 |
Dynamic Programming(DP) - RGB거리[1149] (0) | 2022.04.06 |
Dynamic Programming(DP) - 2×n 타일링[11726] (0) | 2022.04.05 |
Dynamic Programming(DP) - 1, 2, 3 더하기[9096] (0) | 2022.04.04 |