[C++] 1149: RGB거리

우나·2022년 10월 14일

백준

목록 보기
8/16

정답 코드

#include <iostream>
using namespace std;

int DP[1001][3] = { 0 };

int main() {
	int N;

	cin >> N;

	for (int i = 1; i <= N; i++) {
		cin >> DP[i][0] >> DP[i][1] >> DP[i][2];
	}
	
	for (int i = 2; i <= N; i++) {
		for (int j = 0; j < 3; j++) {
			if (j == 0) {
				DP[i][j] += min(DP[i - 1][1], DP[i - 1][2]);
			}
			else if (j == 1) {
				DP[i][j] += min(DP[i - 1][0], DP[i - 1][2]);
			}
			else if (j == 2) {
				DP[i][j] += min(DP[i - 1][0], DP[i - 1][1]);
			}
		}
	}

	int ans = DP[N][0];
	for (int i = 0; i < 3; i++) {
		ans = min(ans, DP[N][i]);
	}

	cout << ans;

}

i번 째 집에 각각의 색 R,G,B를 칠했을 때의 최소 비용 값으로 표를 갱신해서, 최종적으로 마지막 줄에서 가장 작은 값이 정답이 되었다

1개의 댓글

comment-user-thumbnail
2022년 10월 18일

문제 정리를 잘하시네요! 잘 보고 갑니다.

답글 달기