알고리즘

[leetcode/python] 561번 Array Partition

grin-quokka 2023. 4. 13. 11:34

https://leetcode.com/problems/array-partition/

 

문제 요약 : 배열에서 두 개씩 짝을 지었을 때의 최솟값으로 만들 수 있는 최대 합을 구하라

최솟값끼리 더한 것이 최대 합이 되려면 작은 것끼리 짝을 맞추면 된다.

 

로직은 다음과 같다.

1. 오름차순으로 정렬한다

2. 두개씩 짝지었을 때 짝수번째가 작은 값이 되기 때문에 이를 합산해 준다.

 

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:
        sum = 0
        for i, n in enumerate(sorted(nums)):
            if i % 2 == 0:
                sum += n
        return sum

시간복잡도는 O(n)이다