+"""
1149 - RGB거리 / silver 1 / DP
"""
import sys
input = sys.stdin.readline
house = []
N = int(input().rstrip())
for _ in range(N):
house.append(list(map(int, input().split())))
for i in range(1, len(house)):
house[i][0] = min(house[i - 1][1], house[i - 1][2]) + house[i][0]
house[i][1] = min(house[i - 1][0], house[i - 1][2]) + house[i][1]
house[i][2] = min(house[i - 1][0], house[i - 1][1]) + house[i][2]
print(min(house[N - 1][0], house[N - 1][1], house[N - 1][2]))
1. 입력 받은 것을 house 리스트에 넣기
EX) house = [[26, 40, 83], [49, 60, 57], [13, 89, 99]]
2. DP 알고리즘
house[1][0] 을 선택 했을 시, 최소 비용은 (house[0][1], house[0][2] 둘 중 최소 값) + house[1][0] 이다.
즉, min(40, 83) + 49 를 house[1][0] 에 최신화 시키기
똑같은 로직으로 house[1][1], house[1][2] 최신화 시키기
이러한 반복을 house 마지막 인덱스까지 반복
'백준 문제풀이' 카테고리의 다른 글
1932 - 정수 삼각형 / silver 1 / DP (0) | 2022.10.18 |
---|---|
1629 - 곱셈 / silver 1 / pow() (0) | 2022.10.17 |
16953 - A → B / silver 2 / BFS (0) | 2022.10.17 |
11725 - 트리의 부모 찾기 / Silver 2 / BFS (0) | 2022.10.17 |
11053 - 가장 긴 증가하는 부분 수열 / Silver 2 / DP (0) | 2022.10.17 |