Java/Baekjoon
[Baekjoon] 1149번 RGB거리 (Java)
다콩잉
2022. 8. 30. 02:14
예제 입력1
3
26 40 83
49 60 57
13 89 99
예제 출력1
96
예제 입력2
3
1 100 100
100 1 100
100 100 1
예제 출력2
3
예제 입력3
3
1 100 100
100 100 100
1 100 100
예제 출력3
102
예제 입력4
6
30 19 5
64 77 64
15 19 97
4 71 57
90 86 84
93 32 91
예제 출력4
208
예제 입력5
8
71 39 44
32 83 55
51 37 63
89 29 100
83 58 11
65 13 15
47 25 29
60 66 19
예제 출력5
253
package Q1149;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
int[][] arr = new int[num][3];
int[][] intArr = new int[num][3];
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
arr[i][j] = scan.nextInt();
}
}
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
if(i == 0) {
intArr[i][j] = arr[i][j];
}else {
if(j == 0) {
// [i-1][1]과 [i-1][2] 중 작은 값과 나를 더함
intArr[i][j] = intArr[i-1][1] > intArr[i-1][2] ? arr[i][j]+intArr[i-1][2] : arr[i][j]+intArr[i-1][1];
}else if(j == 1) {
// [i-1][0]과 [i-1][2] 중 작은 값과 나를 더함
intArr[i][j] = intArr[i-1][0] > intArr[i-1][2] ? arr[i][j]+intArr[i-1][2] : arr[i][j]+intArr[i-1][0];
}else if(j == 2) {
// [i-1][0]과 [i-1][1] 중 작은 값과 나를 더함
intArr[i][j] = intArr[i-1][0] > intArr[i-1][1] ? arr[i][j]+intArr[i-1][1] : arr[i][j]+intArr[i-1][0];
}
}
}
}
int result = 0;
for(int i = 0; i < 3; i++) { // 해당 경우의 값을 저장한 마지막줄에서 가장 작은 값을 출력
if(i == 0) {result = intArr[num-1][i]; }
else if(result > intArr[num-1][i]){
result = intArr[num-1][i];
}
}
System.out.println(result);
}
}
정수 삼각형 문제와 아주 유사한 문제
모든 갈 수 있는 경우의 수를 다 더해서 가장 작은 값을 출력
728x90