DP(Dynamic programming) 알고리즘 문제이다.
2차원 배열을 선언하고 다음행을 입력할 때,
이전의 행 중 최소값을 더해서 입력한다.
그렇게 R,G,B 총 3개의 경우를 고려하고
가장 마지막 행의 값 중 가장 작은 값을 출력하면 정답이다.
package codingTest_backjoon;
import java.util.Scanner;
//RGB거리
public class Main_1149 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int row = scan.nextInt();
int[][] arg = new int[row][3];
for(int i=0; i<row; i++) {
int R = scan.nextInt();
int G = scan.nextInt();
int B = scan.nextInt();
if(i == 0) {
arg[i][0] = R;
arg[i][1] = G;
arg[i][2] = B;
}else {
arg[i][0] = R + Math.min(arg[i-1][1], arg[i-1][2]);
arg[i][1] = G + Math.min(arg[i-1][0], arg[i-1][2]);
arg[i][2] = B + Math.min(arg[i-1][0], arg[i-1][1]);
}
}
int min = arg[row-1][0];
for(int i=0; i<arg[0].length; i++) {
if(min > arg[row-1][i]) {
min = arg[row-1][i];
}
}
System.out.println(min);
}
}
반응형
'STUDY > 코딩테스트' 카테고리의 다른 글
프로그래머스 코딩테스트 기록 [JAVA] (0) | 2020.05.26 |
---|---|
백준 2920번 음계 [JAVA] (0) | 2020.05.24 |
백준 7576번 토마토 [JAVA] (0) | 2019.10.24 |
백준 9461번 파도반 수열 [JAVA] (0) | 2019.10.18 |