Array partition1 - leetcode(561)

llama·2022년 3월 13일

알고리즘

목록 보기
8/16
post-thumbnail

Array partition1

요구사항

  • 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.
    => min(a, b)를 이용한 모든 페어의 합으로 만들수 있는것 중 가장 큰 수를 출력하면 된다.

Solution

preInput = [1, 4, 3, 2]

# 오름차순으로 정렬한 뒤, 슬라이싱 기능으로 짝수번만 더해준다. (입력값이 홀수라면 내림차순을 이용해야한다.)
# min()을 최대 값으로 만들어 낼 수 있는 방법이다.
class Solution:
    def arrayPairSum(self, nums):
        return sum(sorted(nums)[::2])

sol = Solution()

print(sol.arrayPairSum(preInput))

📌 코드 풀이

min()을 이용하기 때문에 n값과 n값에 가장 근접한 수와 한쌍을 맺어야 가장 큰값을 구할 수 있다.
입력값 길이가 짝수인 경우 오름차순으로 정렬한 뒤 슬라이싱 기능으로 짝수(index)번만 더 해주면 되고, 입력값 길이가 홀수라면 내림차순을 이용해야 한다.

leetcode

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

profile
요리사에서 프론트엔드 개발자를 준비하는중 입니다.

0개의 댓글