Problem Solving/백준

알고리즘 문제풀이(Java) - 백준 1149번 (RGB 거리)

돌돌김 2019. 1. 21. 01:48








다음은 소스코드 이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class DP_RGB_Street_1149 {
    public static void main(String[] args) {    
        int R = 0, G = 1, B =2// 빨 , 파, 초 순서
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 집의 수 : 반복 횟수 
        int[][]arr = new int[n][3]; // 집을 칠할때 드는 비용. 맨 마지막 칸은 최종합        
        arr[0][R] = sc.nextInt();
        arr[0][G] = sc.nextInt();
        arr[0][B] = sc.nextInt(); 
        for(int i=1; i<n; i++) {
            arr[i][R] = Math.min(arr[i-1][G], arr[i-1][B])+sc.nextInt(); // 이전의 Green과 Blue 중 작은값이 Red자리에 올 수 있음
            arr[i][G] = Math.min(arr[i-1][R], arr[i-1][B])+sc.nextInt(); // 이전의 Red과    Blue 중 작은값이 Green자리에 올 수 있음
            arr[i][B] = Math.min(arr[i-1][G], arr[i-1][R])+sc.nextInt(); // 이전의 Green과 Red 중 작은값이 Blue자리에 올 수 있음            
        }
        //시작이 색에 따라 정해지는 최소 비용 0:Red, 1:Green, 2:Blue
        int result = Math.min(arr[n-1][0],Math.min(arr[n-1][1], arr[n-1][2]));        
        System.out.println(result);
    }
}
cs