#include <stdio.h>
#include <algorithm>
using namespace std;
 
int n;
int cost[1001][3];
int cache[1001][3];
 
int dp(int home_index, int color_index)
{
    if(home_index >= n)
        return 0;
 
    if(cache[home_index][color_index])
        return cache[home_index][color_index];
 
    int m = -1;
 
    for(int i=0;i<3;i++)
        if(i != color_index)
        {
            if( m == -1 )
                m = cost[home_index][color_index] + dp(home_index + 1, i);
            else
                m = min(m, cost[home_index][color_index] + dp(home_index + 1, i));
        }
 
    cache[home_index][color_index] = m;
    
    return m;
}

int main()
{
    scanf("%d"&n);
 
    for(int i=0;i<n;i++)
    {
        scanf("%d"&cost[i][0]);
        scanf("%d"&cost[i][1]);
        scanf("%d"&cost[i][2]);
    }
 
    int m = dp(00);
    m = min(m, dp(01));
    m = min(m, dp(02));
 
    printf("%d", m);
 
    return 0;
}

cs


'백준' 카테고리의 다른 글

[C++] 백준(BAEKJOON) 2579  (0) 2019.03.18
[C++] 백준(BAEKJOON) 1463  (0) 2019.03.14
[C++] 백준(BAEKJOON) 1003  (0) 2019.03.13
[C++] 백준(BAEKJOON) 11726  (0) 2019.03.13
[C++] 백준(BAEKJOON) 1932  (0) 2019.03.13

+ Recent posts