알고리즘 - 배열 파티션 1
n개의 페어를 이용한 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력하라.
Input | Output |
---|---|
[1,4,3,2] | 4 |
ex) min(1,2) + min(3,4) = 4
Solution1 (오름차순)
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
Solution2 (짝수 번째 값 계산)
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
Solution3 (파이썬다운 방식)
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
return sum(sorted(nums)[::2])
슬라이싱을 사용한 덕분에 성능이 가장 좋다.
댓글남기기