정수 삼각형(1932)
각 층의 모든 칸 마다 최댓값을 저장하면서 동적 계획법으로 푸는 문제
Last updated
각 층의 모든 칸 마다 최댓값을 저장하면서 동적 계획법으로 푸는 문제
Last updated
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 530import java.io.*;
import java.util.*;
public class Main{
static int arr[][];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
arr = new int[N+1][N+1];
for(int i=1; i<=N; i++){
for(int j=1; j<=i; j++){
arr[i][j] = sc.nextInt();
}
}
for(int i=1; i<=N; i++){
for(int j=1; j<=i; j++){
if(j==1)
arr[i][j] +=arr[i-1][j];
else if(i==j)
arr[i][j] += arr[i-1][j-1];
else
arr[i][j] += Math.max(arr[i-1][j], arr[i-1][j-1]);
}
}
// System.out.println("==============");
// for(int i=1; i<=N; i++){
// for(int j=1; j<=N; j++){
// System.out.print(arr[i][j]+" ");
// }
// System.out.println();
// }
// System.out.println("==============");
int max=0;
for(int i=1; i<=N; i++){
if(max < arr[N][i])
max = arr[N][i];
}
System.out.println(max);
}
}import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int[][] arr = new int[n+1][n+1];
for(int i=1; i<=n; i++){
String[] tmp = bf.readLine().split(" ");
for(int j=0; j<tmp.length; j++){
arr[i][j+1] = Integer.parseInt(tmp[j]);
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
if(j==1)
arr[i][j] += arr[i-1][j];
else if(j==i)
arr[i][j] += arr[i-1][j-1];
else
arr[i][j] += Math.max(arr[i-1][j-1], arr[i-1][j]);
}
}
int max = 0;
for(int i=1; i<=n; i++){
max = Math.max(max, arr[n][i]);
}
System.out.println(max);
}
}