Dev.baelanche

[백준 1149] RGB거리 본문

Data Structure & Algorithm/PS - JAVA

[백준 1149] RGB거리

baelanche 2019. 4. 15. 20:27
반응형

 

 

예제의 값으로 풀이 방법을 서술해보겠다.

 

 

 

  R G B
dp[0][i] = a[0][i] 26 40 83

dp 배열의 첫번째 인덱스에는 입력받은 값을 받는다.

 

 

  R G B
dp[0][i] 26 40 83
dp[1][i] 49 + 40 60 + 26 57 + 26

색상은 연속으로 칠할 수 없으므로 다른 색상 중 최소값을 받아 더한다.

 

 

  R G B
dp[0][i] 26 40 83
dp[1][i] 49 + 40 60 + 26 57 + 26
dp[2][i] 13 + 60 + 26 89 + 57 + 26 99 + 60 + 26

마찬가지로 채워준다.

 

 


dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + a[i][0];

dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + a[i][1];

dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + a[i][2];


위 표의 결과대로 만든 점화식이다.

 

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int a[][] = new int[n][3];
        int dp[][] = new int[n][3];
        
        for(int i=0; i<n; i++) {
            for(int j=0; j<3; j++) {
                a[i][j] = sc.nextInt();
            }
        }
        
        dp[0][0] = a[0][0]; dp[0][1] = a[0][1]; dp[0][2] = a[0][2];
        for(int i=1; i<n; i++) {
            dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + a[i][0];
            dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + a[i][1];
            dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + a[i][2];
        }
        
        System.out.println(min(min(dp[n-1][0], dp[n-1][1]), dp[n-1][2]));
        sc.close();
    }
    
    public static int min(int a, int b) {
        return a < b ? a : b;
    }
    
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 2579] 계단 오르기  (0) 2019.04.15
[백준 1932] 정수 삼각형  (0) 2019.04.15
[백준 1188] 음식 평론가  (0) 2019.04.15
[백준 10824] 네 수  (0) 2019.04.13
[백준 2033] 반올림  (0) 2019.04.12
Comments