import sys
input = sys.stdin.readline
n,m = map(int,input().split())
arr = [[0]*(m+1)] + [[0]+list(map(int,input().split())) for i in range(n)]
dp = [[0]*(m+1) for i in range(n+1)]
for i in range(1,n+1):
for j in range(1,m+1):
dp[i][j] = max(dp[i-1][j],dp[i][j-1])+arr[i][j]
print(dp[n][m])
당연히 bfs/dfs 중 하나라고 생각했는데…. 찾아보니 dp라는 것을 활용하는 문제였다
https://velog.io/@khjcode/알고리즘-DP-문제-풀기-파이썬#dp-란-무엇인가
알고리즘 DP 문제 풀기 ( 파이썬 )
DP 란 수학과 컴퓨터 공학, 그리고 경제학에서 동적 계획법( dynamic programming)이란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다.
velog.io
정해진 규칙에 따라 이동할 때, 가져올 수 있는 사탕의 최댓값을 출력하는 문제이다.
점화식:
dp[i][j] = max(dp[i-1][j], dp[i][j-1])+arr[i][j]
인덱스를 맞춰주기 위해 0으로 이루어진 패딩 배열을 덧붙인 것. 처음에 이해하지 못했음
'22-1 하계 모각코' 카테고리의 다른 글
TIL 0820:: boj 2579 (0) | 2022.08.20 |
---|---|
TIL 0817:: boj 5566 (0) | 2022.08.20 |
TIL::0810_boj 2210 (0) | 2022.08.11 |
TIL::0806_boj 16918 (0) | 2022.08.07 |
TIL::0803_boj 14620 (0) | 2022.08.05 |