Scroll indicator done
728x90

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

 

1149번: RGB거리

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

www.acmicpc.net

 

 

풀이

 

 

코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

// dp 를 1차원 or 2차원을 고민하고 나서 부터는 금방 풀었던 거 같다.
// 해당 색을 칠한다고 가정, 전꺼에서 해당 색 제외한 색 비용 중 작은 값을 가져온다.
class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[][] arr = new int[n][3];
        for (int i = 0; i < n; i++) {
            String[] strArray = br.readLine().split(" ");
            for (int j = 0; j < 3; j++) {
                arr[i][j] = Integer.parseInt(strArray[j]);
            }
        }

        int[][] dp = new int[n][3];
        dp[0][0] = arr[0][0];
        dp[0][1] = arr[0][1];
        dp[0][2] = arr[0][2];

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

        System.out.println(Arrays.stream(dp[n-1]).min().getAsInt());
    }
}

728x90

'BAEKJOON > Java' 카테고리의 다른 글

[B12919][A와 B 2][java]  (0) 2023.10.09
[B1548][부분 삼각 수열][java]  (0) 2023.10.08
[B14620][꽃길][Java]  (0) 2023.10.08
[B1325][효율적인 해킹][java]  (0) 2023.10.08
[B11722][가장 긴 감소하는 부분 수열][java]  (0) 2023.10.08