Programming

[5주차] 백준 17404번: RGB 거리2_C++

mnzy🌱 2022. 5. 9. 15:24

백준 17404: RGB 거리2

https://www.acmicpc.net/problem/17404

 

17404번: RGB거리 2

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net



계속 고민해보다가 못풀겠어서 구글링해보고 코드를 복사해서 이해해보는 식으로 마무리했다.

추후에 내 코드로 수정해야겠다


#define MAX 987654321
#include <iostream>
#include <algorithm>
using namespace std;
int cost[1001][3];
int dp[1001][3];		

int main() {
	int num, result = MAX;
	cin >> num;
	for (int i = 1; i <= num; i++) 
		cin >> cost[i][0] >> cost[i][1] >> cost[i][2];
	for (int i = 0; i < 3; i++) {
		for (int k = 0; k < 3; k++) {
			if (i == k) dp[1][k] = cost[1][k];
			else dp[1][k] = MAX;
		}
		for (int k = 2; k <= num; k++) {
			dp[k][0] = cost[k][0] + min(dp[k - 1][1], dp[k - 1][2]);
			dp[k][1] = cost[k][1] + min(dp[k - 1][0], dp[k - 1][2]);
			dp[k][2] = cost[k][2] + min(dp[k - 1][1], dp[k - 1][0]);
		}
		for (int k = 0; k < 3; k++) {
			if (i != k) 
				result = min(result, dp[num][k]);			
		}
	}
	cout << result;
	system("pause");
	return 0;
}

 

[출처] https://imnotabear.tistory.com/81


진짜 오래 고민했는데 너무 어려워서 직접 하나하나 다 푸는건 포기했다..

이번주동안 더 오래 생각해보고 코드 업로드해야 겠다..