[LeetCode] Array Partition

아르당·2026년 1월 29일

LeetCode

목록 보기
118/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

2n개의 정수로 이루어진 배열 nums가 주어졌을 때, 이 정수들을 (a[1], b[1]), (a[2], b[2]), ..., (a[n], b[n])와 같은 n개의 쌍으로 묶어 모든 i에 대해 min(a[i], b[i])의 합이 최대가 되도록 한다. 최대화된 합을 반환해라.

Example

#1
Input: nums = [1, 4, 3, 2]
Output: 4
Explanation: 가능한 모든 조합(순서 무시)은 다음과 같다.
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
따라서 가능한 최대 합은 4이다.

#2
Input: nums = [6, 2, 6, 5, 1, 2]
Output: 9
Explanation: 최적의 쌍은 (2, 1), (2, 5), (6, 6)이다. min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2+ 6 = 9이다.

Constraints

  • 1 <= n <= 10^4
  • nums.length == 2 * n
  • -10^4 <= nums[i] <= 10^4

Solved

class Solution {
    public int arrayPairSum(int[] nums) {
        Arrays.sort(nums);

        int result = 0;

        for(int i = 0; i < nums.length; i += 2){
            result += nums[i];
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글