1149번: RGB거리 (acmicpc.net)

 

#RGB거리: 빨/초/파 중 하나의 색으로 칠해야 한다. 이웃한 집들과는 색이 달라야 한다. 칠하는 최소 비용 구하기.

 

n = int(input())

graph = []
for _ in range(n):
    graph.append(list(map(int, input().split())))

빨, 초, 파로 각각의 집을 칠하는 가격 순서대로 입력받아서 그래프로 나타내기

 

 

dp = []
for _ in range(n):
    dp.append([0, 0, 0])

dp[0][0] = graph[0][0]
dp[0][1] = graph[0][1]
dp[0][2] = graph[0][2]

for i in range(1, n):
    
    dp[i][0] = min(dp[i-1][1], dp[i-1][2])+graph[i][0]
    dp[i][1] = min(dp[i-1][0], dp[i-1][2])+graph[i][1]
    dp[i][2] = min(dp[i-1][0], dp[i-1][1])+graph[i][2]
    
    '''
    if dp[i-1][0]+graph[i][1] <= dp[i-1][2]+graph[i][1]:
        dp[i][1]= dp[i-1][0]+graph[i][1]
    else: dp[i][1] = dp[i-1][2]+graph[i][1]
    ↑ 이런 형식에서 간단하게 수정함.
    
    '''
    
print(min(dp[n-1]))

 

 

'알고리즘 PS > DP' 카테고리의 다른 글

DP 황금미로  (0) 2024.06.08
백준 #11726번 2xn 타일링[파이썬]  (0) 2024.02.01
백준 #9095 1, 2, 3 더하기  (1) 2023.11.09
백준 #2839 설탕배달  (1) 2023.10.02
백준 #1463 1로 만들기  (0) 2023.10.02

+ Recent posts