알고리즘 공부 및 문제 풀이/프로그래머스(PRO)
[pro] 프로그래머스 level3 43105 정수 삼각형 (Java) - dp
yoonjiy
2023. 1. 13. 16:55
[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/43105
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[풀이]
전형적인 dp 문제.
[코드]
class Solution {
int[][] dp;
public int solution(int[][] triangle) {
int answer = 0;
// 거쳐간 숫자의 최댓값을 return
dp = new int[triangle.length][triangle.length];
for(int i=0; i<triangle.length; i++){
for(int j=0; j<=i; j++){
dp[i][j] = triangle[i][j];
}
}
for(int i=1; i<triangle.length; i++){
for(int j=0; j<=i; j++){
if(j==0){
dp[i][j] += dp[i-1][j];
}
else if(j==i){
dp[i][j] += dp[i-1][j-1];
}
else{
dp[i][j] += Math.max(dp[i-1][j-1], dp[i-1][j]);
}
}
}
answer = dp[triangle.length-1][0];
for(int i=1; i<triangle.length; i++){
answer = Math.max(answer, dp[triangle.length-1][i]);
}
return answer;
}
}