본문 바로가기
백준 문제 풀이 & C++ 공부

백준 1149 C++

by daisy0461 2025. 3. 27.
#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