YataNox
[Java] Lv.3 정수 삼각형 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43105?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
위에서 아래로 내려가며 계산하면 고려할게 너무 많다.
BOTTOM - UP 방식으로 위로 올라가면서 계산한다.
한 줄로 표현하면 n층 i번과 i + 1번 중 더 큰 값을 n - 1층 i번에 더한다.
그러면 맨 위층에는 아래서부터 더해서 올라온 값 중 가장 큰 값이 저장되고 그 값을 반환한다.
자바 코드
import java.util.*;
class Solution {
public int solution(int[][] triangle) {
int[][] dp = new int[triangle.length + 1][triangle.length];
// 맨 아래층부터 검사해나간다.
for(int i = triangle.length - 1; i > 0; i--){
for (int j = 0; j < triangle[i].length - 1; j++) {
// 현재 위치에서 한 층 위의 숫자에
// 현재 위치와 현재 위치 + 1 값 중 더 큰 값을 더 함
triangle[i - 1][j] += Math.max(triangle[i][j], triangle[i][j + 1]);
}
}
// 최종적으로 삼각형의 맨 위에 최대 합이 저장됨
return triangle[0][0];
}
}
'코딩 테스트 > PROGRAMMERS' 카테고리의 다른 글
[Java] Lv.3 단어 변환 (1) | 2024.07.23 |
---|---|
[Java] Lv.3 야근 지수 (5) | 2024.07.23 |
[Java] Lv.2 연속 부분 수열 합의 개수 (0) | 2024.06.20 |
[Java] Lv.2 택배상자 (0) | 2024.06.20 |
[Java] Lv.2 롤케이크 자르기 (0) | 2024.06.18 |