#include <iostream> #include <algorithm> #include <string.h> using namespace std; int N; int red[1010]; int blue[1010]; int green[1010]; int dp[3][1010]; int solve(int color, int cnt) { if(cnt == N) { return 0; } if(dp[color][cnt] != 99999999) { return dp[color][cnt]; } if(color == 0) { dp[color][cnt] = min(solve(1, cnt+1) + red[cnt], solve(2, cnt+1) + red[cnt]); } else if(color == 1) { dp[color][cnt] = min(solve(0, cnt+1) + blue[cnt], solve(2, cnt+1) + blue[cnt]); } else if(color == 2) { dp[color][cnt] = min(solve(0, cnt+1) + green[cnt], solve(1, cnt+1) + green[cnt]); } return dp[color][cnt]; } int main(void) { // freopen("B1149_input.txt", "r", stdin); cin >> N; for(int i = 0; i < N; i++) { cin >> red[i] >> blue[i] >> green[i]; dp[0][i] = 99999999; dp[1][i] = 99999999; dp[2][i] = 99999999; } cout << min({solve(0, 0), solve(1, 0), solve(2,0)}); return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 2163] 초콜릿 자르기 (DP) (C/C++) (0) | 2020.03.15 |
---|---|
[백준 1010] 다리 놓기 (DP) (C/C++) (0) | 2020.03.15 |
[백준 1932] 정수 삼각형 (DP) (C/C++) (0) | 2020.03.15 |
[백준 1003] 피보나치 함수 (DP) (C/C++) (0) | 2020.03.15 |
[백준 10211] Maximum Subarray (DP) (C/C++) (★★) (0) | 2020.03.15 |