본문 바로가기
Algorithm(BOJ, Python)/Dynamic Programing

[백준_1149] RGB거리 python

by kurooru 2022. 7. 1.

푸는데 한시간 이상 걸렸다.

1차원 배열로 해결하려 했다가 큰코다쳤다.

왜 그랬는지 나도 내가 이해가 안간다.

변수의 개수에 따라 배열의 개수를 늘려나가는 기초적인 개념을 까먹어선 안 될 것이다.

# n 입력
n = int(input())

# cost 리스트 형성
cost = [0]
for _ in range(n):
 cost.append(list(map(int, input().split())))

# dp설계
dp = [
 [0] * 3 for _ in range(1001)
]

# 초기설정
dp[1][0] = cost[1][0]
dp[1][1] = cost[1][1]
dp[1][2] = cost[1][2]

# dp 채워넣기
for i in range(2, len(cost)):
 dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + cost[i][0]
 dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + cost[i][1]
 dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + cost[i][2]

print(min(dp[n]))