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