π‘ Info
λ΄μ©
μ κ·Έλ¦Όμ ν¬κΈ°κ° 5μΈ μ μ μΌκ°νμ ν λͺ¨μ΅μ΄λ€.
맨 μμΈ΅ 7λΆν° μμν΄μ μλμ μλ μ μ€ νλλ₯Ό μ ννμ¬ μλμΈ΅μΌλ‘ λ΄λ €μ¬ λ, μ΄μ κΉμ§ μ νλ μμ ν©μ΄ μ΅λκ° λλ κ²½λ‘λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. μλμΈ΅μ μλ μλ νμ¬ μΈ΅μμ μ νλ μμ λκ°μ μΌμͺ½ λλ λκ°μ μ€λ₯Έμͺ½μ μλ κ² μ€μμλ§ μ νν μ μλ€.
μΌκ°νμ ν¬κΈ°λ 1 μ΄μ 500 μ΄νμ΄λ€. μΌκ°νμ μ΄λ£¨κ³ μλ κ° μλ λͺ¨λ μ μμ΄λ©°, λ²μλ 0 μ΄μ 9999 μ΄νμ΄λ€.
π₯μ λ ₯ 쑰건
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
π€μΆλ ₯ 쑰건
30
μ€μ νμ΄ μκ° : 15λΆ
import java.util.*;
public class Main {
static int N;
static int[][] TD;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
TD = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < i + 1; j++) {
TD[i][j] = sc.nextInt();
}
}
for (int i = 1; i < N; i++) {
for (int j = 0; j <= i; j++) {
int LUp, Up;
if (j == 0) {
LUp = 0;
} else {
LUp = TD[i - 1][j - 1];
}
if (j == i) {
Up = 0;
} else {
Up = TD[i - 1][j];
}
TD[i][j] = TD[i][j] + Math.max(LUp, Up);
}
}
int result = 0;
for (int i = 0; i < N; i++) {
result = Math.max(result, TD[N - 1][i]);
}
System.out.println(result);
}
}