728x90
class Solution {
public int solution(int[][] triangle) {
int answer = 0; // 거쳐간 숫자의 합의 최댓값
int n=triangle.length;
int[][] dp = new int[n][n];
dp[0][0] = triangle[0][0];
for(int i=1; i<n; i++){
for(int j=0; j<=i; j++){
if(j==0){
dp[i][j] = dp[i-1][j] + triangle[i][j];
}
else if(j == i){
dp[i][j] = dp[i-1][j-1] + triangle[i][j];
}
else{
dp[i][j] = Math.max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j];
}
}
}
// 마지막 줄 중 최댓값이 정답
for(int v: dp[n-1]){
answer = Math.max(answer, v);
}
return answer;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 피로도 : Java / DFS+백트래킹 (0) | 2025.07.05 |
|---|---|
| [Lv.3] 이중우선순위큐 (0) | 2025.07.04 |
| [Lv.3] 네트워크 : BFS (0) | 2025.07.04 |
| [Lv.2] 최솟값 만들기 : Java (0) | 2025.07.04 |
| [Lv.2] 올바른 괄호 : Java (1) | 2025.07.04 |