BOJ_17404_RGB거리 2_java
2023. 1. 24. 12:29ㆍAlgorithm/BOJ
728x90
https://www.acmicpc.net/problem/17404
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
백준 17404번 RGB거리 2
골드 4
*/
public class BOJ_17404_RGB거리2 {
private static final int INF = 123456789;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] map = new int[N][3];
for (int i = 0 ; i< N; i++){
st = new StringTokenizer(br.readLine());
for (int j = 0; j<3; j++){ // R, G, B 순서 비용
map[i][j] = Integer.parseInt(st.nextToken());
}
}
System.out.println(solve(N, map));
}
public static long solve(int N, int map[][]){
long[][] dp = new long[N][3];
long min = INF;
for (int i = 0; i<3; i++){ // 0번 집 색상
for (int j = 0; j<N; j++){
if (j==0){
if (i == 0){ // 처음 집 r
dp[0][0] = map[0][0];
dp[0][1] = INF; //다른 집 선택 안하도록
dp[0][2] = INF;
}else if(i == 1){ // 처음 집 g
dp[0][0] = INF;
dp[0][1] = map[0][1];
dp[0][2] = INF;
}else if(i==2){ // 처음 집 b
dp[0][0] = INF;
dp[0][1] = INF;
dp[0][2] = map[0][2];
}
}else{
dp[j][0] = Math.min(dp[j-1][1], dp[j-1][2]) + map[j][0];
dp[j][1] = Math.min(dp[j-1][0], dp[j-1][2]) + map[j][1];
dp[j][2] = Math.min(dp[j-1][0], dp[j-1][1]) + map[j][2];
}
}
if (i == 0){ // 처음 집 r
min = Math.min(min, Math.min(dp[N-1][1], dp[N-1][2]));
}else if(i == 1){ // 처음 집 g
min = Math.min(min, Math.min(dp[N-1][0], dp[N-1][2]));
}else if(i==2){ // 처음 집 b
min = Math.min(min, Math.min(dp[N-1][0], dp[N-1][1]));
}
}
return min;
}
public static void printmap(int[][] map){ // 입력 테스트
System.out.println();
for (int i = 0; i<map.length; i++){
for (int j = 0; j<map[i].length; j++){
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
public static void printmap(long[][] map){ // 입력 테스트
System.out.println();
for (int i = 0; i<map.length; i++){
for (int j = 0; j<map[i].length; j++){
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
}
'Algorithm > BOJ' 카테고리의 다른 글
BOJ_2143_두 배열의 합 (0) | 2023.02.02 |
---|---|
BOJ_20040_사이클게임_java (0) | 2023.01.30 |
BOJ_10942_팰린드롬?_java (0) | 2023.01.24 |
BOJ_17427_약수의 합 2_java (0) | 2023.01.14 |
BOJ_9252_LCS 2_java (0) | 2023.01.13 |