반응형

 

📖 문제

 

📋 코드

import java.util.*;
public class Main {
	
	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int RGB[][] = new int[N+1][3];
		int DP[][] = new int[N+1][3];
		
		for (int i = 1; i <= N; i++) {
			for (int j = 0; j <= 2; j++) {
				RGB[i][j] = sc.nextInt();
			}
		}
		
		DP[1][0] = RGB[1][0];
		DP[1][1] = RGB[1][1];
		DP[1][2] = RGB[1][2];
		
		for (int i = 2; i <= N; i++) {
			DP[i][0] = Math.min(DP[i-1][1], DP[i-1][2]) + RGB[i][0];
			DP[i][1] = Math.min(DP[i-1][0], DP[i-1][2]) + RGB[i][1];
			DP[i][2] = Math.min(DP[i-1][0], DP[i-1][1]) + RGB[i][2];
		}
		
		System.out.println(Math.min(Math.min(DP[N][0], DP[N][1]), DP[N][2]));
		
	}
}

👨🏻‍💻 결과

 

 

📕 풀이 방법

 

DP[i][j] : 1~i-1번째 집까지 색칠하고 i번째 집은 j(0:R, 1G, 2:B)를 칠했을 때 최소 비용  

 

🔗 링크

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

 

1149번: RGB거리

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

www.acmicpc.net

 

반응형

+ Recent posts