-
[백준] 1149 RGB거리 #JAVAAlgorithm Solving/BAEKJOON 2021. 2. 27. 00:33
[백준] 1149 RGB거리 #JAVA
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public 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+1][3]; //arr[i][j] // i번째 집에 j(R,G,B) 비용 StringTokenizer st ; for (int i = 1; i <= n; i++) { st = new StringTokenizer(br.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); //R 빨강 arr[i][1] = Integer.parseInt(st.nextToken()); //G 초록 arr[i][2] = Integer.parseInt(st.nextToken()); //B 파랑 } int[][] d = new int[n+1][3]; //거리 정보를 담을 배열 /* * i번째 집까지 칠할 떄 비용의 최솟값, j는 색상 d[i][0] R d[i][1] G d[i][2] B */ d[1][0] = arr[1][0]; d[1][1] = arr[1][1]; d[1][2] = arr[1][2]; for (int i = 2; i < d.length; i++) { d[i][0] = Math.min(d[i-1][1], d[i-1][2])+arr[i][0]; d[i][1] = Math.min(d[i-1][0], d[i-1][2])+arr[i][1]; d[i][2] = Math.min(d[i-1][0], d[i-1][1])+arr[i][2]; } System.out.println(Math.min(d[n][0], Math.min(d[n][1], d[n][2]))); } }
풀이
- DP
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Algorithm Solving > BAEKJOON' 카테고리의 다른 글
[백준] 11047 동전0 #JAVA (0) 2021.02.28 [백준] 12852 1로 만들기 2#JAVA (0) 2021.02.27 [백준] 2579 계단 오르기 #JAVA (0) 2021.02.26 [백준] 1463 1로 만들기 #JAVA #DP (0) 2021.02.25 [백준] 1463 1로만들기 #JAVA #BFS (0) 2021.02.25