작심삼일

[LeetCode] 1679 | Max Number of K-Sum Pairs | Python 본문

스터디/코테

[LeetCode] 1679 | Max Number of K-Sum Pairs | Python

yun_s 2022. 5. 4. 09:29
728x90
반응형

문제 링크: https://leetcode.com/problems/max-number-of-k-sum-pairs/


문제

You are given an integer array nums and an integer k.

In one operation, you can pick two numbers from the array whose sum equals k and remove them from the array.

Return the maximum number of operations you can perform on the array.


조건

  • 1 <= nums.length <= $10^5$
  • 1 <= nums[i] <= $10^9$
  • 1 <= k <= $10^9$

내 풀이

nums의 원소들을 센 count라는 dictionary를 만든다.

k가 짝수일 때는 한 값으로 k를 만들어야 하므로(ex. k=6, count[3]=2 → ans += 1) 그 절반만 더한다.

nums 안의 원소 num과 k-num이 모두 count에 존재할 때, 그 수가 더 작은 것만큼 ans에 더한다.


코드

class Solution:
    def maxOperations(self, nums: List[int], k: int) -> int:
        count = Counter(nums)
        ans = 0
        
        if k%2 == 0 and k//2 in count:
            ans += int(count[k//2]/2)
            count[k//2] = 0
        
        for num in count:
            if k-num in count:
                ans += min(count[num], count[k-num])
                count[num], count[k-num] = 0, 0
            
        return ans
728x90
반응형
Comments