728x90
1.Key Point
경우의 수가 3가지로 나누어지는 문제이다.
1번째 case는 가장 좌측 case
- 가장 좌측 case는 좌측 배열의 값끼리 더해주면 된다.
2번째 case는 가장 우측 case
- 가장 우측 case는 우측 배열의 값끼리 더해주면 된다.
마지막 case는 이외의 경우이다.
- 바로 위(상위 행) 왼쪽이나 바로 위(상위 행) 중 max 값을 골라 본인 값과 더하는 과정을 거친다.
import sys
input = sys.stdin.readline
n = int(input())
dp = [list(map(int, input().split())) for _ in range(n)]
for i in range(1,n): #idx 1~4까지 idx 0은 값이 안 바뀌니까 무시
for j in range(i+1): #if i==1, j=0,1
if j==0: #가장 좌측
dp[i][0] += dp[i-1][0]
elif i==j: #가장 우측
dp[i][-1] += dp[i-1][-1]
else: #이외의 경우
dp[i][j] += max(dp[i-1][j-1], dp[i-1][j])
print(max(dp[-1])) #최하단 배열의 최댓값 구하기
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 15810번 python 풀이 - 이분탐색 (0) | 2023.02.01 |
---|---|
[백준/BOJ] - 9461번 python 풀이 - DP (0) | 2023.01.04 |
[백준/BOJ] - 2156번 python 풀이 - DP (0) | 2022.12.29 |
[백준/BOJ] - 1912번 python 풀이 - DP (0) | 2022.12.29 |
[백준/BOJ] - 11503번 python 풀이 - DP (0) | 2022.12.29 |