대각선, 위, 아래를 모두 생각해 줄 필요는 없다.
모든 사탕은 양수이기 때문이다.
초기 설정만 잘 해주면 쉽게 해결할 수 있다.
근데 이거 그리디 아닌가,,?

# n, m 입력
n, m = map(int, input().split())
# grid 설계
grid = [
list(map(int, input().split())) for _ in range(n)
]
# dp 설계
dp = [
[0] * m for _ in range(n)
]
# 초기 설정
dp[0][0] = grid[0][0]
# 가로 줄 초기설정
for i in range(1, m):
dp[0][i] = dp[0][i-1] + grid[0][i]
# 세로 줄 초기설정
for i in range(1, n):
dp[i][0] = dp[i-1][0] + grid[i][0]
# dp 채워넣기
for i in range(1, n):
for j in range(1, m):
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + grid[i][j]
# 출력
print(dp[-1][-1])'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
| [백준_16194] 카드 구매하기2 python (0) | 2022.07.17 |
|---|---|
| [백준_1965] 상자넣기 python (0) | 2022.07.15 |
| [백준_1904] 01타일 python (0) | 2022.07.13 |
| [백준_15988] 1, 2, 3 더하기 3 python (0) | 2022.07.11 |
| [백준_15486] 퇴사2 python (0) | 2022.07.10 |