백준 17404: RGB 거리2
https://www.acmicpc.net/problem/17404
계속 고민해보다가 못풀겠어서 구글링해보고 코드를 복사해서 이해해보는 식으로 마무리했다.
추후에 내 코드로 수정해야겠다
#define MAX 987654321
#include <iostream>
#include <algorithm>
using namespace std;
int cost[1001][3];
int dp[1001][3];
int main() {
int num, result = MAX;
cin >> num;
for (int i = 1; i <= num; i++)
cin >> cost[i][0] >> cost[i][1] >> cost[i][2];
for (int i = 0; i < 3; i++) {
for (int k = 0; k < 3; k++) {
if (i == k) dp[1][k] = cost[1][k];
else dp[1][k] = MAX;
}
for (int k = 2; k <= num; k++) {
dp[k][0] = cost[k][0] + min(dp[k - 1][1], dp[k - 1][2]);
dp[k][1] = cost[k][1] + min(dp[k - 1][0], dp[k - 1][2]);
dp[k][2] = cost[k][2] + min(dp[k - 1][1], dp[k - 1][0]);
}
for (int k = 0; k < 3; k++) {
if (i != k)
result = min(result, dp[num][k]);
}
}
cout << result;
system("pause");
return 0;
}
[출처] https://imnotabear.tistory.com/81
진짜 오래 고민했는데 너무 어려워서 직접 하나하나 다 푸는건 포기했다..
이번주동안 더 오래 생각해보고 코드 업로드해야 겠다..