i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.
이 조건을 보면
[i][1] = min([i - 1][2], [i - 1][3])
[i][2] = min([i - 1][1], [i - 1][3])
[i][3] = min([i - 1][1], [i - 1][2])
이 규칙을 따른 다는 것을 알 수 있다
#include<bits/stdc++.h>
using namespace std;
int arr[1001][4], n;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < 3; j++)
cin >> arr[i][j];
for (int i = 0; i < n - 1; i++) {
arr[i + 1][0] += min(arr[i][1], arr[i][2]);
arr[i + 1][1] += min(arr[i][0], arr[i][2]);
arr[i + 1][2] += min(arr[i][1], arr[i][0]);
}
int min_num = min({arr[n - 1][0], arr[n - 1][1], arr[n - 1][2]});
cout << min_num << '\n';
}