728x90
https://programmers.co.kr/learn/courses/30/lessons/43105
코딩테스트 연습 - 정수 삼각형
[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30
programmers.co.kr
- 문제

문제
풀이
- DP를 활용한 간단한 문제이다.
- dp 2차원 배열을 선언 후 dp [0][0]에 초깃값을 넣어준다
- 2번째 줄부터는 DP를 활용하면 된다.
- 1열 = 이전 행에 첫번째 요소에 값 밖에 못 더해준다.
- 2열 ~ n -1 열 = 이전행의 i-1, i 번째 열 중 큰 값에 현재 값을 더해준다
- n열 = 이전행의 마지막 열을 요소 값 밖에 못 더해준다.
-
public static int solution(int[][] triangle) { int answer = 0; int[][] dp = new int[triangle.length][];// 계산된 배열 dp[0] = new int[1];//초깃값 dp[0][0] = triangle[0][0]; for(int i=1;i<triangle.length;++i) { dp[i] = new int[triangle[i].length]; dp[i][0] = dp[i-1][0] + triangle[i][0];//첫번째 열 for(int j=1;j<triangle[i].length-1;++j) {//2열 ~ n-1열 dp[i][j] = Math.max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j]; } dp[i][triangle[i].length-1] = triangle[i][triangle[i].length-1] + dp[i-1][triangle[i-1].length-1]; //n 열 } for(int i=0;i<triangle[triangle.length-1].length;++i) { answer = Math.max(answer, dp[dp.length-1][i]);//최댓값을 구해준다 } return answer; }
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| LEVEL 3 : 순위 (0) | 2021.11.26 |
|---|---|
| LEVEL 3 : 네트워크 (0) | 2021.11.26 |
| LEVEL 3 : 리틀 프렌즈 사천성 (0) | 2021.11.25 |
| LEVEL 3 : 디스크컨트롤러 (0) | 2021.11.25 |
| LEVEL 3 : [1차] 추석 트래픽 (0) | 2021.11.24 |