우당탕탕 개발일지
[프로그래머스] 정수 삼각형(Java, Lv.3) 본문
반응형
문제
위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다.
아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다.
입출력 예
풀이
동적계획법(DP) 사용
2차원 배열 dp 값 설정
dp의 원소 값 중 가장 큰 값 출력
최종 코드
public static int solution(int[][] triangle) {
System.out.println("정수 삼각형");
int len = triangle.length;
// 1. dp 초기화
int[][] dp = new int[len][len];
dp[0][0] = triangle[0][0];
// 1-1. 첫번째 요소 초기화 [i][0]
for (int i = 1; i < len; i++) {
dp[i][0] = triangle[i][0] + dp[i - 1][0];
}
// 2. 동적 계획법
// 2-2. 첫번째 요소를 제외한 모든 값 초기화
for (int i = 1; i < len; i++) {
for (int j = 1; j < i + 1; j++) {
dp[i][j] = triangle[i][j] + Math.max(dp[i - 1][j - 1], dp[i - 1][j]);
}
}
// 3. 최댓값 구하기
// int max = 0;
// for (int i = 0; i < len; i++) {
// max = Math.max(dp[len - 1][i], max);
// }
Arrays.sort(dp[len - 1]);
return dp[len - 1][len - 1];
}
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/43105
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 보석 쇼핑(Java, Level.3) (0) | 2024.04.02 |
---|---|
[프로그래머스] 숫자게임(Java, Level.3) (1) | 2024.04.01 |
[프로그래머스] 최고의 집합(Java, Level.3) (0) | 2024.03.19 |
[프로그래머스] 야근지수 (Java, Level.3) (0) | 2024.03.14 |
[프로그래머스] 귤 고르기 (Java, Lv.2) (0) | 2024.03.06 |