Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 1932] 정수 삼각형 본문
반응형
간단한 dp 문제이다.
7 | ||||
3 | 8 | |||
8 | 1 | 0 | ||
2 | 7 | 4 | 4 | |
4 | 5 | 2 | 6 | 5 |
아래 인덱스는 위에 인접해 있는 인덱스 중 큰것을 골라 더해간다.
7 | ||||
3+7 | 8+7 | |||
8+3+7 | 1+8+7 | 0+8+7 | ||
2+8+3+7 | 7+8+3+7 | 4+1+8+7 | 4+1+8+7 | |
4+2+8+3+7 | 5+7+8+3+7 | 2+7+8+3+7 | 6+4+1+8+7 | 5+4+1+8+7 |
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + a[i][j];
점화식은 위와 같다.
dp[i][0] 일때는 -1의 인덱스로 접근할 수 있으므로 이것만 유의하면 된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[][] = new int[n][n];
int dp[][] = new int[n][n];
for(int i=0; i<n; i++) {
for(int j=0; j<i+1; j++) {
a[i][j] = sc.nextInt();
}
}
int max = 0;
dp[0][0] = a[0][0];
for(int i=1; i<n; i++) {
for(int j=0; j<i+1; j++) {
if(j==0)
dp[i][j] = dp[i-1][j] + a[i][j];
else
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + a[i][j];
if(max < dp[i][j])
max = dp[i][j];
}
}
System.out.println(max);
}
public static int max(int a, int b) {
return a > b ? a : b;
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 2644] 촌수계산 (0) | 2019.04.16 |
---|---|
[백준 2579] 계단 오르기 (0) | 2019.04.15 |
[백준 1149] RGB거리 (0) | 2019.04.15 |
[백준 1188] 음식 평론가 (0) | 2019.04.15 |
[백준 10824] 네 수 (0) | 2019.04.13 |
Comments