Given an integer array nums of 2n integers, group these integers into n pairs (a1, b1), (a2, b2), ..., (an, bn) such that the sum of min(ai, bi) for all i is maximized. Return the maximized sum.
Example 1:
Input: nums = [1,4,3,2]
Output: 4
Explanation: All possible pairings (ignoring the ordering of elements) are:
1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4
So the maximum possible sum is 4.
오늘은 문제가 너무 쉬웠당
import java.util.Arrays;
class Solution {
public int arrayPairSum(int[] nums) {
// 1. 오름차순 정렬
Arrays.sort(nums);
// 2. 홀수번쩨 = 짝수 인덱스들의 합
int maxSum = 0;
int n = nums.length / 2;
for (int i = 0; i < n; i++) {
maxSum += nums[i * 2];
}
return maxSum;
}
}
대신 i+=2
도 있다는 거 까먹지 말기!
for(int i = 0; i < n; i += 2)
ans += nums[i];
필요조건
(1) 메서드 영역
(2) 상수
(3) 클래스를 타입으로
(4) 생성자 비공개
장점
(1) 타입 안정성 증가: 컴파일 오류에서 알 수 있음!
(2) 제한된 인스턴스 생성, 열거된 항목만 사용 가능