[문제]
https://www.acmicpc.net/problem/1149
[풀이]
다이나믹 프로그래밍(DP)
[코드]
#include <bits/stdc++.h>
using namespace std;
int d[1005][3];
int r[1005], g[1005], b[1005];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for(int i=1; i<=n; i++) cin >> r[i] >> g[i] >> b[i];
d[1][0] = r[1];
d[1][1] = g[1];
d[1][2] = b[1];
for(int i=2; i<=n; i++){
d[i][0] = min(d[i-1][1], d[i-1][2]) + r[i];
d[i][1] = min(d[i-1][0], d[i-1][2]) + g[i];
d[i][2] = min(d[i-1][0], d[i-1][1]) + b[i];
}
cout << *min_element(d[n], d[n]+3);
}
'✏️ Algorithm > 알고리즘 풀이' 카테고리의 다른 글
백준 11659번 구간 합 구하기 4 - C++ (0) | 2022.02.16 |
---|---|
백준 11726번 2xn 타일링 - C++ (0) | 2022.02.16 |
백준 11652번: 카드 - C++ (0) | 2022.02.13 |
백준 9095번: 1, 2, 3 더하기 - C++ (1) | 2022.02.13 |
백준 2579번: 계단 오르기 - C++ (0) | 2022.02.13 |