소스코드
N = int(input())
color = []
for i in range (N):
color.append(list(map(int,input().split())))
for i in range (1,N):
color[i][0] += min(color[i-1][1],color[i-1][2])
color[i][1] += min(color[i-1][0],color[i-1][2])
color[i][2] += min(color[i-1][1],color[i-1][0])
print(min(color[-1]))
알고리즘
color = [[30, 19, 5],[64, 77, 64],[15, 19, 97],[4,71,57],[90,86,84],[93,32,91]]
[[30, 19, 5], [69, 82, 83], [15, 19, 97], [4, 71, 57], [90, 86, 84], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [4, 71, 57], [90, 86, 84], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [92, 168, 145], [90, 86, 84], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [92, 168, 145], [235, 178, 176], [93, 32, 91]]
[[30, 19, 5], [69, 82, 83], [97, 88, 166], [92, 168, 145], [235, 178, 176], [269, 208, 269]]
코드를 실행하면 변화되는 color 의 값이다
각각의 R,G,B는 그 전 color의 값중 최소를 더해나간다.
ex) color[1] = [64,77,64] -> [64+5,77+5,64+19]
이렇게 더해나가다 보면 전의 집과 겹치지 않는 최소의 비용을 얻어나갈 수 있다.
'Coding test' 카테고리의 다른 글
[11053/백준/파이썬] 가장 긴 증가하는 부분 수열 - DP (1) | 2023.11.20 |
---|---|
[프로그래머스/파이썬/구명보트] (0) | 2023.10.01 |
[백준/14501/파이썬] 퇴사 (0) | 2023.06.04 |
[백준/11401/파이썬] (0) | 2023.06.03 |
[백준/2579/파이썬] 계단오르기 (0) | 2023.06.02 |