본문 바로가기

알고리즘

[파이썬 알고리즘 인터뷰] 배열파티션1

728x90
 

Array Partition I - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

나의풀이

def arrayPairSum(self, nums: List[int]) -> int:
        nums.sort()
        sum=0
        for i in range(0,len(nums),2):
            sum+=min(nums[i],nums[i+1])
        
        return sum

오름차순으로 정렬후 쌍을 구하여 각 쌍의 최솟값을 구하면 항상 가장 큰 값이 나옴

짝수번째 값 계산

def arrayPairSum(self, nums: List[int]) -> int:
    nums.sort()
    sum=0

    for i, n in enumerate(nums):
        if i%2==0:
                sum+=2
    return sum

정렬 후 쌍을 지어 최솟값을 구하면 항상 짝수 인덱스 항이 선택됨으로 짝수 인덱스 값만 모두 더하면 된다.

파이써닉한 방법

def arrayPairSum(self, nums: List[int]) -> int:
    return sum(sorted(nums)[::2])

짝수 인덱스 값만 더하는 과정을 슬라이싱을 이용하여 파이써닉하게 구한 풀이이다.

반응형