Array_Partition_I

김_리트리버·2021년 3월 26일
0

[알고리즘]

목록 보기
31/47
# 전체 요소 갯수가 짝수개인 배열이 인풋으로 주어짐

# 해야되는 것은 요소들을 2개씩 그룹화 하고

# 그중에 최소값을 각각 구해서 합한다.

# 합한 결과중 최대값을 리턴한다.

# 최소값을 최대로 만들려면 ?

# 1,3 => 1
# 2,4 => 2

# 1,2 => 1

# 3,4 => 3

# 작은것들은 작은것끼리
# 큰것들은 큰것 끼리 모아야 함

# => 처음에 정렬해놓고 순서대로 최대값 계산하면 됨

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:

        sorted_nums = sorted(nums)

        sum = 0

        for index in range(len(sorted_nums)-1):

            if (index % 2 == 0):

                sum += min(sorted_nums[index], sorted_nums[index+1])

        return sum

개선

생각해보니 어차피 정렬되어 있어 최소값 계산하는게 무의미함..

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:

        sorted_nums = sorted(nums)

        sum = 0

        for index in range(len(sorted_nums)):

            if (index % 2 == 0):

                sum += sorted_nums[index]

        return sum
profile
web-developer

0개의 댓글