코테 백준 1149 실버1

김동윤·2023년 8월 17일
0
post-thumbnail

백준 1149
이문제는 기존의 dp문제와 흡사하다. 지금 단계에서 최소가 되려면 이전 단계에서도 최소가 되어야한다. 그러면 가장 처음부터 최소가되어야한다. 그래서 현재 빨간색을 택했을때 (이전의 파란색을 택했을 때 최소비용, 이전의 초록색을 택했을 때 최소비용) 중 작은값을 택해 현재의 빨간색의 비용값을 더해주면 현재까지 빨간색을 택했을 때 가장 최소가 된다. 이런식으로 파란,초록색도 같이 해주면 된다.

import sys
input=sys.stdin.readline

n=int(input())
dp=[[0]*3 for _ in range(n)]

color=[]
for i in range(n):
    r,g,b=map(int,input().split())
    color.append((r,g,b))
dp[0][0]=color[0][0]
dp[0][1]=color[0][1]
dp[0][2]=color[0][2]
for i in range(1,n):
    for j in range(3):
        dp[i][0]=min(dp[i-1][1],dp[i-1][2])+color[i][0]
        dp[i][1]=min(dp[i-1][0],dp[i-1][2])+color[i][1]
        dp[i][2]=min(dp[i-1][0],dp[i-1][1])+color[i][2]

print(min(dp[n-1]))
profile
Back-End

0개의 댓글