반응형
1. 문제 정의
2. 문제 접근
dp 토픽에 속한 것이니 dp로 풀면 될 것 같다.
3. 문제 풀이
- k길이 만큼의 window가 필요하고, 이 window를 sliding하면서 for-loop의 각 시점마다 최대값을 알아낸다.
- 이전 dp 배열에 내가 알아낸 최댓값을 곱해주고 더해준다.
- 마지막 인덱스의 값을 리턴한다.
4. 코드
class Solution {
public int maxSumAfterPartitioning(int[] arr, int k) {
int length = arr.length;
int[] dp = new int[length + 1];
for (int i = 1; i <= length; i++) {
int max = 0;
int sum = 0;
for (int j = 1; j <= k && i - j >= 0; j++) {
max = Math.max(max, arr[i - j]);
sum = Math.max(sum, (max * j) + dp[i - j]);
}
dp[i] = sum;
}
return dp[length];
}
}
5. 회고
문제부터가 이해가 되지 않아서 이해하는데 한참이 걸렸다... 아직도 사실 문제를 100퍼센트 이해하진 못했지만 여러 유튜브들의 해설 영상을 보고 조금은 이해가? 된 것 같다... 다시 혼자서 풀 수 있을때까지 연습해야지...
반응형
'코딩테스트 > leetcode' 카테고리의 다른 글
99클럽 코테 스터디 21일차 TIL, 이분법(Capacity To Ship Packages Within D Days) (1) | 2024.06.11 |
---|---|
99클럽 코테 스터디 19일차 TIL, DP(Count Square Submatrices with All Ones) (1) | 2024.06.09 |
99클럽 코테 스터디 17일차 TIL, DP(Count Sorted Vowel Strings) (1) | 2024.06.07 |
99클럽 코테 스터디 16일차 TIL, DP(All Possible Full Binary Trees) (0) | 2024.06.06 |
99클럽 코테 스터디 13일차 TIL, 완전탐색( Reverse Odd Levels of Binary Tree) (0) | 2024.06.03 |