#include <bits/stdc++.h>
using namespace std;
struct HomeStruct
{
int r=0; int g=0; int b=0;
};
//주변 집(-1, + 1)의 색과 같지 않아야한다.
int n;
HomeStruct arr[1010];
int dp[1010][3];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
int r, g, b;
for (int i = 1; i <= n; i++) {
cin >> r >> g >> b;
arr[i].r = r;
arr[i].g = g;
arr[i].b = b;
//첫 색깔을 칠했을 때의 최소값.
dp[i][0] = min(dp[i - 1][1] + r, dp[i - 1][2] + r);
dp[i][1] = min(dp[i - 1][0] + g, dp[i - 1][2] + g);
dp[i][2] = min(dp[i - 1][0] + b, dp[i - 1][1] + b);
}
int result=1e9;
for (int i = 0; i < 3; i++) {
result = min(result, dp[n][i]);
}
cout << result;
}
3가지 색을 색칠했을 때 최소값을 계속 dp로 저장하면 된다.
코드를 다 짜고 나니 struct는 없어도 된다.
'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글
백준 10844 C++ (0) | 2025.03.30 |
---|---|
백준 1932 C++ (0) | 2025.03.27 |
백준 1940 C++ (0) | 2025.03.27 |
백준 11066 C++ (0) | 2025.03.26 |
백준 11049 C++ (0) | 2025.03.26 |