[백준] 1149번 RGB거리 (JAVA, DP)
728x90
반응형
dp[i][j] < i 번째 집 j색깔
색깔이 0인 경우 이전 집 dp[i-1][1]과 dp[i-1][2] 중 더 비용이 적은 것에서 현재 0을 칠하는 비용을 더해주는 방식으로
갱신해준다.
n번째 집까지 다 칠한 경우 dp[n-1][0], dp[n-1][1], dp[n-1][2] 중에서 가장 비용이 적은 것을 출력해준다.
import java.util.Scanner;
public class Main {
static int n;
static int[][] rgb;
static int[][] dp;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
rgb=new int[n][3];
dp=new int[n][3];
for (int i = 0; i < n; i++) {
rgb[i][0]=sc.nextInt();
rgb[i][1]=sc.nextInt();
rgb[i][2]=sc.nextInt();
}
dp[0][0]=rgb[0][0];
dp[0][1]=rgb[0][1];
dp[0][2]=rgb[0][2];
for (int i = 1; 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];
}
int answer=Integer.MAX_VALUE;
for (int i = 0; i <3; i++) {
if(answer>dp[n-1][i])answer=dp[n-1][i];
}
System.out.println(answer);
}
}
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 17086번. 아기 상어2 (bfs, java) (0) | 2021.03.24 |
---|---|
[백준] 16236번 아기 상어 (bfs, java) (0) | 2021.03.24 |
[백준] 1463. 1로 만들기 (dp) (0) | 2021.03.23 |
[백준] 1753번. 최단 경로 (다익스트라, java) (0) | 2021.03.22 |
[백준] 1197. 최소 스패닝 트리 (크루스칼 알고리즘, MST) (0) | 2021.03.19 |
TAGS.