728x90
n = int(input())
d = []
for i in range(n):
d.append( list(map(int, input().split())) )
for i in range(len(d)):
if i == 0:
continue
d[i][0] = min(d[i-1][1], d[i-1][2]) + d[i][0]
d[i][1] = min(d[i-1][0], d[i-1][2]) + d[i][1]
d[i][2] = min(d[i-1][0], d[i-1][1]) + d[i][2]
print(min( d[len(d)-1][0], d[len(d)-1][1], d[len(d)-1][2] ))
모든 경우의 수를 다 구해서 최솟값을 리턴. min
- d[i][0] = min(d[i-1][1], d[i-1][2]) + d[i][0]
- d[i][1] = min(d[i-1][0], d[i-1][2]) + d[i][1]
- d[i][2] = min(d[i-1][0], d[i-1][1]) + d[i][2]
728x90
'Programming > 알고리즘' 카테고리의 다른 글
[java, 알고리즘, 그리디] :: 큰 수의 법칙 (1) | 2021.02.14 |
---|---|
[greedy] - 백준 11399번 ATM (0) | 2020.09.16 |
백준 - 1로 만들기, DP / python3 (0) | 2020.09.06 |
implementation, 구현 (0) | 2020.08.25 |
그리디 알고리즘 (0) | 2020.08.25 |
댓글