전체 비용이 최소가 되기 위해서 마지막집이 R일 때, G일 때, B일 때 모두를 계산하고
그중 최소인 것을 출력한다.
이때 i번째 집은 i-1번째 집과 다른 색이어야 한다는 조건이 있기 때문에
i번째 집이 R인 경우에는 i-1번째 집이 G거나 B여야 하고
i번째 집이 G인 경우에는 i-1번째 집이 R이거나 B여야 하고
i번째 집이 B인 경우에는 i-1번째 집이 R이거나 G여야 한다.
n = int(input())
color = [0]*(n)
for i in range(n):
color[i] = 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][0],color[i-1][1])
print(min(color[n-1][0],color[n-1][1],color[n-1][2]))
'[BOJ] - Python' 카테고리의 다른 글
[백준] 1932 : 정수 삼각형 python (0) | 2023.09.29 |
---|---|
[백준] 12865 : 평범한 배낭 python (0) | 2023.09.28 |
[백준] 24416 : 알고리즘 수업 - 피보나치 수 1 (0) | 2023.09.28 |
[백준] 16928 : 뱀과 사다리 게임 python (0) | 2023.09.24 |
[백준] 1012 : 유기농 배추 python (0) | 2023.09.24 |