푸는데 한시간 이상 걸렸다.
1차원 배열로 해결하려 했다가 큰코다쳤다.
왜 그랬는지 나도 내가 이해가 안간다.
변수의 개수에 따라 배열의 개수를 늘려나가는 기초적인 개념을 까먹어선 안 될 것이다.

# n 입력
n = int(input())
# cost 리스트 형성
cost = [0]
for _ in range(n):
cost.append(list(map(int, input().split())))
# dp설계
dp = [
[0] * 3 for _ in range(1001)
]
# 초기설정
dp[1][0] = cost[1][0]
dp[1][1] = cost[1][1]
dp[1][2] = cost[1][2]
# dp 채워넣기
for i in range(2, len(cost)):
dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + cost[i][0]
dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + cost[i][1]
dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + cost[i][2]
print(min(dp[n]))
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
| [백준_2579] 계단오르기 python (0) | 2022.07.02 |
|---|---|
| [백준_1463] 1로 만들기 python (0) | 2022.07.02 |
| [백준_2156] 포도주시식 python (0) | 2022.06.29 |
| [백준_11726] 2×n 타일링 python (0) | 2022.06.28 |
| [백준_2688] 줄어들지 않아 python (0) | 2022.06.27 |