문제
https://school.programmers.co.kr/learn/courses/30/lessons/43105
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 개요
주어진 삼각형 구조에서 꼭대기에서 시작하여 대각선 아래 방향으로 이동하며 숫자의 합을 최대화하는 경로를 찾는 문제입니다. 각 위치에서는 바로 아래칸의 두 개의 숫자 중 하나로만 이동할 수 있습니다.
접근 방법
- 역방향 동적 프로그래밍(DP)
- 삼각형의 아래쪽에서부터 위쪽으로 값을 갱신하며 최대값을 계산합니다.
- 각 칸에서 가질 수 있는 최대값을 그 칸의 값과 아래층 두 칸의 최대값 중 더 큰 값을 더하여 구합니다.
- 구체적인 동작
- 삼각형의 가장 아래층부터 시작하여 각 칸에서 바로 아래층의 두 칸 중 더 큰 값을 현재 칸에 더합니다.
- 이를 반복하여 삼각형의 꼭대기까지 계산을 진행합니다.
- 최종적으로 꼭대기 값은 최대 합 경로를 나타냅니다.
코드
import java.util.*;
class Solution {
public int solution(int[][] triangle) {
int answer = 0;
for(int i=triangle.length-1; i>=1; i--) {
for(int j=0; j<triangle[i].length-1; j++) {
triangle[i-1][j] += Math.max(triangle[i][j], triangle[i][j+1]);
}
}
return triangle[0][0];
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 단속카메라 - Java (0) | 2024.12.02 |
---|---|
[프로그래머스] 최고의 집합 - Java (0) | 2024.12.01 |
[프로그래머스] 무인도 여행 - Java (0) | 2024.11.30 |
[프로그래머스] 미로 탈출 - Java (0) | 2024.11.30 |
[프로그래머스] [PCCP 기출문제] 4번 / 수레 움직이기 - Java (1) | 2024.11.29 |