[伯俊]149号RGB距離—Java、Java
難易度
銀色.
質問する
https://www.acmicpc.net/problem/1149
に答える
テーブルの定義
dp[i]=i 1軒目の家を塗る際の最低コスト
点火式を探す
i 1軒目が赤いとき(0)、
i-1緑の家や青の家であれば、最高値と赤の家を追加します.
i 1番目の家が緑のとき(1)、i 1番目の家が青のとき(2)も上記のように埋めます.
dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + g;
dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + b;
出力はdp[n][0]、dp[n][1]およびdp[n][2]の最大値である.
コード#コード#
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 1149번 RGB 거리
public class boj_2_1149 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[][] dp = new int[n + 1][3];
for (int i = 1; i <= n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int r = Integer.parseInt(st.nextToken());
int g = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + r;
dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + g;
dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + b;
}
System.out.println(Math.min(dp[n][0], Math.min(dp[n][1], dp[n][2])));
}
}
Reference
この問題について([伯俊]149号RGB距離—Java、Java), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmjieun/백준-1149번-RGB-거리-Java-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol