PS/백준

백준 17404 - RGB거리 2 [Java]

munsik22 2026. 3. 16. 20:32

문제

풀이 (그림)

아래 코드에서는 1001으로 초기화되었지만 편의상 ∞로 표기하였음

코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = 3;
        int[][] arr = new int[N][M];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                arr[i][j] = scanner.nextInt();
            }
        }

        int ans = Integer.MAX_VALUE;
        for (int j = 0; j < M; j++) {
            int[][] dp = new int[N][M];
            for (int k = 0; k < M; k++) {
                if (j == k) dp[0][k] = arr[0][j];
                else dp[0][k] = 1001;
            }
            for (int i = 1; i < N; i++) {
                dp[i][0] = arr[i][0] + Math.min(dp[i-1][1], dp[i-1][2]);
                dp[i][1] = arr[i][1] + Math.min(dp[i-1][0], dp[i-1][2]);
                dp[i][2] = arr[i][2] + Math.min(dp[i-1][0], dp[i-1][1]);
            }
            for (int i = 0; i < M; i++) {
                if (j != i) ans = Math.min(ans, dp[N-1][i]);
            }
        }

        System.out.println(ans);
        scanner.close();
    }
}

'PS > 백준' 카테고리의 다른 글

백준 1726 - 로봇 [Java]  (0) 2026.03.16
백준 27913 - SciComLove (2023) [Python] [Swift]  (0) 2026.03.05
백준 14428 - 수열과 쿼리 16 [Java]  (0) 2026.03.04
백준 9699 - RICE SACK [Java]  (0) 2026.03.03
백준 1406 - 에디터 [Java]  (0) 2026.03.02