본문 바로가기
SWE/코테

[성실코딩 9일차] 백준 #1149 RGB거리 / DP

by S나라라2 2018. 10. 23.
반응형

오홋 이제 DP 조금 재밌어졌다! 규칙성만 찾으면 오히려 문제 깔끔함!!


문제 풀이


#include<iostream>
#include<algorithm>

using namespace std;

int n;
int RGB[3][1001] = { 0, };
int DP[3][1001] = { 0, };

int main() {

	cin >> n;

	for (int j = 0; j < n; j++) {
		for (int i = 0; i < 3; i++) {
			cin >> RGB[i][j];
		}
	}
	
	// 초기화
	for (int i = 0; i < 3; i++) {
		DP[i][0] = RGB[i][0];
	}

	for (int j = 1; j < n; j++) {
		for (int i = 0; i < 3; i++) {
			DP[i][j] = min(DP[(i+1)%3][j-1]+RGB[i][j], DP[(i+2)%3][j-1]+RGB[i][j]);
		}
	}

	int smallest = DP[0][n-1];
	for (int i = 1; i < 3; i++) {
		if (smallest > DP[i][n - 1]) {
			smallest = DP[i][n-1];
		}
	}

	cout << smallest << endl;

	return 0;
}


반응형