# 테스트 케이스(Test Case) 입력
for tc in range(int(input())):
# 금광 정보 입력
n, m = map(int, input().split())
array = list(map(int, input().split()))
# 다이나믹 프로그래밍을 위한 2차원 DP 테이블 초기화
dp = []
index = 0
for i in range(n):
dp.append(array[index:index + m])
index += m
# 다이나믹 프로그래밍 전형
for j in range(1, m):
for i in range(n):
# 왼쪽 위에서 오는 경우
if i == 0: left_up = 0
else: left_up = dp[i - 1][j - 1]
# 왼쪽 아래에서 오는 경우
if i == n - 1: left_down = 0
else: left_down = dp[i + 1][j - 1]
# 왼쪽에서 오는 경우
left = dp[i][j - 1]
dp[i][j] = dp[i][j] + max(left_up, left_down, left)
result = 0
for i in range(n):
result = max(result, dp[i][m - 1])
print(result)
[Python] 최단 경로 알고리즘(1)- 개요 (0) | 2022.07.09 |
---|---|
[Python] 다이나믹 프로그래밍(12) - 병사 배치하기 (0) | 2022.06.26 |
[Python] 다이나믹 프로그래밍(10) - 효율적인 화폐 구성 (0) | 2022.06.25 |
[Python] 다이나믹 프로그래밍(8) - 개미전사 (0) | 2022.06.25 |
[Python] 다이나믹 프로그래밍(7) - 다이나믹 Vs 분할 정복 (0) | 2022.06.24 |
댓글 영역