
DP를 적용한 코드
for tc in range(int(input())):
n, m = map(int, input().split())
array = list(map(int, input().split()))
dp = []
index = 0
for i in range(n):
dp.append(array[index:index + m])
index += m
# print(dp)
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)
'''
2
3 4
1 3 3 2 2 1 4 1 0 6 4 7
4 4
1 3 1 5 2 2 4 1 5 0 2 3 0 6 1 2
'''
'Programming > 1 Day 1 Commit' 카테고리의 다른 글
[이취코] 전보 (Python3) (0) | 2024.03.06 |
---|---|
[이취코] 병사 배치하기 (Python3) (0) | 2024.03.06 |
[이취코] 효율적인 화폐 구성 (Python3) (0) | 2024.03.06 |
[이취코] 1로 만들기 (Python3) (0) | 2024.03.06 |
[이취코] 정렬된 수열에서 특정 수의 개수 구하기 (Python) (0) | 2024.03.06 |