백준 1149 c++
#include <iostream>
#include <algorithm>
using namespace std;
int input(int lower, int upper)
{
//cout << "input()" << endl;
int A;
while (1)
{
cin >> A;
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void input_RGBarr(int** cost, int size)
{
//cout << "input_RGBarr()\n";
int i, j;
cost[0][0] = 0;
cost[0][1] = 0;
cost[0][2] = 0;
for (i = 1; i <= size; i++)
{
for (j = 0; j < 3; j++)
{
cost[i][j] = input(1, 1000);
}
}
return;
}
int find_result(int** cost, int size)
{
//cout << "find_result()\n";
int i;
for (i = 1; i <= size; i++)
{
//R을 선택한 경우
cost[i][0] = cost[i][0] + min(cost[i - 1][1], cost[i - 1][2]);
//G를 선택한 경우
cost[i][1] = cost[i][1] + min(cost[i - 1][0], cost[i - 1][2]);
//B를 선택한 경우
cost[i][2] = cost[i][2] + min(cost[i - 1][0], cost[i - 1][1]);
}
return min(cost[size][0], min(cost[size][1], cost[size][2]));
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, i;
int **cost;
N = input(2, 1000);
cost = new int* [N+1];
for (i = 0; i <= N; i++)
{
cost[i] = new int[3];
}
input_RGBarr(cost, N);
cout << find_result(cost, N) << "\n";
for (i = 0; i <= N; i++)
{
delete[] cost[i];
}
delete[] cost;
return 0;
}