반응형
# Problem
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.![]() Constraints:
|
# My Answer
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
nums.sort()
sum=0
for i in range(0,len(nums),2):
sum +=nums[i]
return sum
# Solution 1 - 오름차순 풀이
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
sum = 0
pair = []
nums.sort()
for n in nums:
# 앞에서 부터 오름차순으로 페어를 만들어 합 계산
pair.append(n)
if len(pair) == 2:
sum += min(pair)
pair = []
return sum
오름차순으로 인접 요소 페어 만들기
# Solution 2 - 짝수 번째 값 계산
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
sum = 0
nums.sort()
for i, n in enumerate(nums):
# 짝수 번째 값의 합 계산
if i % 2 == 0:
sum += n
return sum
정렬된 상태에서는 짝수번째에 항상 작은 값 위치
# Solution 3 - 파이썬다운 방식
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
return sum(sorted(nums)[::2])
solution2를 슬라이싱 구문 활용하여 짝수 번째 계산
가장 성능이 좋음 ( 슬라이싱 활용)
반응형
'Algorithm > LEET CODE ( 파이썬 알고리즘 인터뷰)' 카테고리의 다른 글
[LEET CODE] 121. Best Time to Buy and Sell Stock (0) | 2021.03.22 |
---|---|
[LEET CODE] 238. Product of Array Except Self (0) | 2021.03.21 |
[LEET CODE] 15. 3Sum ( 투 포인터 활용) (0) | 2021.03.21 |
[LEET CODE] 42. Trapping Rain Water (0) | 2021.03.20 |
[LEET CODE] 1. Two Sum (0) | 2021.03.19 |