[백준] 1149 RGB거리

Dragony·2020년 2월 12일
0

코딩테스트

목록 보기
9/29

백준1149

  • 점화식
    dp[i][0] = _min(dp[i - 1][1], dp[i - 1][2]) + a[i][0];
    dp[i][1] = _min(dp[i - 1][0], dp[i - 1][2]) + a[i][1];
    dp[i][2] = _min(dp[i - 1][0], dp[i - 1][1]) + a[i][2];

dp[i][j] => i번째 집을 j색으로 칠한 경우


#include <iostream>
using namespace std;
int N; //집의 수, 1000보다 작거나 같다

int _min(int a, int b) {

	if (a < b)
		return a;
	else return b;

	
}


void Solve(int dp[][3], int a[][3]) {

	for (int i = 1; i <= N; i++) {
			dp[i][0] = _min(dp[i - 1][1], dp[i - 1][2]) + a[i][0];
			dp[i][1] = _min(dp[i - 1][0], dp[i - 1][2]) + a[i][1];
			dp[i][2] = _min(dp[i - 1][0], dp[i - 1][1]) + a[i][2];
	}
}

int main() {

	int a[1001][3] = { 0, };
	int dp[1001][3] = { 0, };

	scanf("%d", &N);
	for (int i = 1; i <= N; i++) {
		scanf("%d %d %d", &a[i][0], &a[i][1], &a[i][2]);
	}

	Solve(dp, a);

	printf("%d", _min(_min(dp[N][0],dp[N][1]),dp[N][2]));
	return 0;
}
profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글