[알고리즘]/백준

백준 1149 자바 - RGB거리

broship 2021. 9. 6. 07:55

문제


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

 

1149번: RGB거리

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

www.acmicpc.net

 

 

 

문제해결


- dp 배열에 n번째 집을 각 색으로 칠하는데 최소값을 집어 넣는다

- 연속된 색을 칠하면 안되니 1일때는 2,3의 최소값 2일때는 1,3의 최소값... 이런식으로 같은 색은 제외한다

- dp[n] 에서 가장 작은 수가 답인데, 이때 나올수 있는 수중 가장 큰 값인 1000*1000으로 min을 초기화해서 가장 작은 수를 구한다

import java.util.Scanner;

public class B1149 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] dp = new int[n+1][4];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j < 4; j++) {
                dp[i][j] = sc.nextInt();
            }
        }

        for (int i = 2; i <= n; i++) {
            dp[i][1] += Math.min(dp[i-1][2], dp[i-1][3]);
            dp[i][2] += Math.min(dp[i-1][1], dp[i-1][3]);
            dp[i][3] += Math.min(dp[i-1][1], dp[i-1][2]);
        }

        int min = 1000*1000;
        for (int i = 1; i < 4; i++) {
            min = Math.min(min, dp[n][i]);
        }
        System.out.println(min);
    }
}

'[알고리즘] > 백준' 카테고리의 다른 글

백준 1309 자바 - 동물원  (0) 2021.09.10
백준 15988 자바 - 1, 2, 3 더하기 3  (0) 2021.09.05
백준 2225 자바 - 합분해  (0) 2021.08.08
백준 1699 자바 - 제곱수의 합  (0) 2021.08.06
백준 1912 자바 - 연속합  (0) 2021.08.04