DP
배열에 각 집에서 각각의 색을 칠하는데 최소 비용을 저장한다.
dp
배열은 그 집에서 각 색을 칠할때의 최소 비용을 저장하는 배열이다. RGB
를 각각 012
원소에 넣고 i
번째 집에서 0
번째 색을 칠하기 위한 최소 비용은 i-1
번째 집에서 1
또는 2
를 칠하기 위한 최소 비용중 작은 값에 cost[i][0]
을 더한 값이다.
#include<iostream>
using namespace std;
int cost[1000][3];
int dp[1000][3];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>cost[i][0]>>cost[i][1]>>cost[i][2];
}
dp[0][0]=cost[0][0];
dp[0][1]=cost[0][1];
dp[0][2]=cost[0][2];
for(int i=1;i<n;i++){
for(int j=0;j<3;j++){
dp[i][j]=min(dp[i-1][(j+1)%3],dp[i-1][(j+2)%3])+cost[i][j];
}
}
cout<<min(min(dp[n-1][1],dp[n-1][0]),dp[n-1][2]);
}
[백준] 10844번 쉬운 계산 수 (C) (0) | 2020.03.30 |
---|---|
[백준] 1932번 정수 삼각형 (C) (0) | 2020.03.29 |
[백준] 9461번 파도반 수열 (C) (0) | 2020.03.28 |
[백준] 1904번 01타일 (C) (0) | 2020.03.28 |
[백준] 1003번 피보나치 함수 (0) | 2020.03.28 |