[LeetCode] 561번 Array Partition I

ynoolee·2022년 1월 15일
0

[LeetCode] 561번 Array Partition I

2n 개 만큼의 원소를 갖고 있기 때문에,

1 2 3 4 5 6

에서 (1,6) 을 pair로 쓰고 (2,5) 를 pair로 쓴다면, 5,6은 쓸 수도 없게 된다. 이들은 큰 값에 속하는데 사용하지 못하게 된다.
우리는 sum이 max가 되게 하기 위하여, 큰 값들을 사용하긴 해야 한다.
따라서 정렬을 한 후,순차적으로 2*i 번째 index에 위치한 원소들을 더하는 것을 생각했다.

def arrayPairSum(self, nums: List[int]) -> int:
        sum = 0
        nums.sort()
        # i 는 index
        limit = int(len(nums)/2)
        for i in range(limit):
            sum += nums[2*i]
        return sum

파이썬 - range 에 step 옵션

  • 위에서 나는 2 단위로 i 를 뽑아내기 위해 저런식으로 하였다.
  • 그러다 보니 매 번 2 * i 라는 연산이 수행되고 있었음.
  • python에서는 range 에 step이라는 option을 줄 수 있다. → 0,2,4,6 .. 이런식으로 i를 뽑아 내기 위해 step으로 2를 줄 수 있다.
def arrayPairSum(self, nums: List[int]) -> int:
        sum = 0
        nums.sort()
        # i 는 index
        num_len = len(nums)
        for i in range(0,num_len,2):
            sum += nums[i]
        return sum
sum( nums[::2])

0개의 댓글

관련 채용 정보