Menu
CoddyTech

Split Array Largest Sum

음이 아닌 정수 배열 nums와 정수 k가 주어집니다. nums를 정확히 k개의 부분으로 나누세요. 각 부분은 비어 있지 않은 인접한 값들의 연속 구간이어야 하며, 부분들의 순서는 유지되어야 합니다. 각 부분에는 합이 있으며, 분할의 비용은 각 부분 합 중 가장 큰 값입니다.

k개의 부분으로 나누었을 때 얻을 수 있는 가장 작은 비용을 반환하세요.

함수

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
음수가 아닌 값들을 순서대로
kinteger
잘라서 만들 연속된 부분의 개수
반환값integer
가장 큰 부분 합의 가능한 최솟값

제약 조건

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • 각 부분에는 값이 하나 이상 들어 있습니다. 모든 값이 0인 부분의 합은 0이며, 이는 허용됩니다.

예제

입력
nums = [6, 2, 9, 4, 7, 3]k = 3
출력
13
설명
[6, 2], [9, 4], [7, 3]으로 나누면 비용은 13입니다. 어떤 방식으로도 나누지 않으면 비용은 12입니다. 12 이하가 되도록 왼쪽에서 오른쪽으로 부품을 묶으면 [6, 2], [9], [4, 7], [3]으로, 네 부분이 됩니다.
challenge icon

후속 질문

누적 합을 사용하면 탐욕적 검사를 통해 이분 탐색으로 각 부분이 끝나는 위치를 찾을 수 있습니다. k가 작을 때 전체 방법은 얼마나 빨라질까요?

코드 초기화
def splitArray(nums, k):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

nums = [6, 2, 9, 4, 7, 3]
k = 3

예상 출력

13