Skip to content

Commit 3c189de

Browse files
committed
Time: 2 ms (83.99%), Space: 44 MB (32.78%) - LeetHub
1 parent 2fa95d3 commit 3c189de

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
2656. 정확히 K개의 요소를 가진 최대 합계
3+
인덱스가 0인 정수 배열 nums와 정수 k가 주어지며, 점수를 최대화하기 위해 다음 연산을 정확히 k번 수행하는 것이 과제입니다:
4+
5+
nums에서 원소 m을 선택합니다.
6+
배열에서 선택한 원소 m을 제거합니다.
7+
배열에 값이 m + 1인 새 원소를 추가합니다.
8+
점수를 m만큼 늘립니다.
9+
연산을 정확히 k번 수행한 후 얻을 수 있는 최대 점수를 반환합니다.
10+
11+
예제 1:
12+
입력: nums = [1,2,3,4,5], k = 3
13+
Output: 18
14+
설명: 합계를 최대화하려면 nums에서 정확히 3개의 요소를 선택해야 합니다.
15+
첫 번째 반복에서는 5를 선택합니다. 그러면 sum은 5이고 nums = [1,2,3,4,6]이 됩니다.
16+
두 번째 반복에서는 6을 선택합니다. 그러면 sum은 5 + 6이고 nums = [1,2,3,4,7]이 됩니다.
17+
세 번째 반복에서는 7을 선택합니다. 그러면 합계는 5 + 6 + 7 = 18이고 nums = [1,2,3,4,8]입니다.
18+
따라서 18을 반환합니다.
19+
18이 우리가 얻을 수 있는 최대 답이라는 것을 증명할 수 있습니다.
20+
21+
예제 2:
22+
입력: nums = [5,5,5], k = 2
23+
Output: 11
24+
설명: 합계를 최대화하려면 nums에서 정확히 2개의 요소를 선택해야 합니다.
25+
첫 번째 반복에서는 5를 선택합니다. 그러면 합계는 5가 되고 nums = [5,5,6]이 됩니다.
26+
두 번째 반복에서는 6을 선택합니다. 그러면 sum은 5 + 6 = 11이고 nums = [5,5,7]이 됩니다.
27+
따라서 11을 반환합니다.
28+
11이 우리가 얻을 수 있는 최대 답이라는 것을 증명할 수 있습니다.
29+
30+
31+
제약 조건이 있습니다:
32+
1 <= nums.length <= 100
33+
1 <= nums[i] <= 100
34+
1 <= k <= 100
35+
*/
36+
37+
class Solution {
38+
public int maximizeSum(int[] nums, int k) {
39+
int max = 0;
40+
41+
for (int num : nums) {
42+
max = Math.max(max, num);
43+
}
44+
45+
int res = max;
46+
47+
for (int i = 1; i < k; i++)
48+
res += max+i;
49+
50+
return res;
51+
}
52+
}

0 commit comments

Comments
 (0)