#include <iostream> using namespace std; int min(int a, int b) {return a>=b ? b:a;} int main() { int N = 0; int dp[1001][3]={0}; cin >> N; for (int i=1; i<=N; i++) { cin >> dp[i][0] >> dp[i][1] >> dp[i][2]; dp[i][0]=min(dp[i-1][1],dp[i-1][2])+dp[i][0]; dp[i][1]=min(dp[i-1][0],dp[i-1][2])+dp[i][1]; dp[i][2]=min(dp[i-1][0],dp[i-1][1])+dp[i][2]; }
cout << min(min(dp[N][0],dp[N][1]),dp[N][2]);
return 0; } |
https://www.acmicpc.net/problem/1149
dp[i][n] 까지의 최소값을 dp[i][n]에 다시 저장
루프문으로 이 과정을 끝까지 반복해 마지막에 가장 작은 값 출력!
**RGB는 서로 같은 색끼리 이웃 x -> min함수로 이웃 집 비교하기
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
20171008_11844_쉬운 계단 수 (0) | 2017.10.08 |
---|---|
20171007_2193_이친수 (0) | 2017.10.07 |
20171005_9095_1,2,3 더하기 (0) | 2017.10.05 |
20171004_11727_2xn 타일링 2 (0) | 2017.10.04 |
20171004_11726_2xn타일링 (0) | 2017.10.04 |