스파르타코딩클럽/활동 내용
[스파르타] 99클럽 2기 코테스터디 20일차 TIL / leet 1043
신선한 스타트
2024. 6. 8. 23:43
LeetCode: 1043. Partition Array for Maximum Sum (링크)
class Solution:
def maxSumAfterPartitioning(self, arr: List[int], k: int) -> int:
dp = [0] * k
dp[0] = arr[0]
for i in range(1, len(arr)):
cur_max = 0
max_at_i = 0
for j in range(i, i-k, -1):
if j < 0:
break
cur_max = max(cur_max, arr[j])
window_size = i - j + 1
cur_sum = cur_max * window_size
sub_sum = dp[(j - 1) % k] if j > 0 else dp[-1]
max_at_i = max(max_at_i, cur_sum + sub_sum)
dp[i % k] = max_at_i
return dp[(len(arr)-1) % k]
return check
참고한 풀이: https://www.youtube.com/watch?v=kWhy4ZUBdOY