2023-01-29 @이영훈
접근 방법
다이나믹 프로그래밍(DP) 문제입니다.
2차원 배열인 colors 변수에 두 번째 줄부터의 입력 값을 저장하였습니다.
그리고 colors[i]는 colors[i-1]의 다른 열 중에서 최소값을 더했습니다.
즉, 코드로는 colors[i][0] += min(colors[i][1], colors[i][2]) 입니다.
이것을 각 행의 각 열마다 계산하였습니다 (colors[i][0], colors[i][1], colors[i][2])
파이썬 코드
import sys
input = sys.stdin.readline
n = int(input())
colors = []
for _ in range(n):
colors.append(list(map(int, input().split())))
for i in range(1, n):
colors[i][0] += min(colors[i - 1][1], colors[i - 1][2])
colors[i][1] += min(colors[i - 1][2], colors[i - 1][0])
colors[i][2] += min(colors[i - 1][0], colors[i - 1][1])
result = min(colors[n - 1])
print(result)
Python
복사