Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 첫 번째 세트의 요소가 두 번째 세트보다 작은 동일한 합계 세트로 세트를 분할하는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 목록을 두 그룹 A와 B로 나눌 수 있는지 확인해야 합니다. A의 합과 B의 합이 같은지 확인해야 합니다. 여기서 A의 모든 숫자는 B의 모든 숫자보다 엄격하게 작습니다.

따라서 입력이 nums =[3, 4, 5, 12]와 같으면 A =[3,4,5] 및 B =[12]를 가질 수 있고 둘 다 합계 12를 가질 수 있으므로 출력은 True가 됩니다. .

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 목록 번호 정렬

  • total :=num에 있는 모든 요소의 합

  • s :=0, 나는 :=0

  • 동안 나는 <숫자의 크기, 수행

    • n :=숫자[i]

    • i

      • s :=s + 숫자[i]

      • 나는 :=나는 + 1

    • s가 total - s와 같으면

      • 참을 반환

  • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, nums):
      nums.sort()
      total = sum(nums)
      s = 0
      i = 0
      while i < len(nums):
         n = nums[i]
         while i < len(nums) and nums[i] == n:
            s += nums[i]
            i += 1
         if s == total - s:
            return True
      return False
ob = Solution()
nums = [3, 4, 5, 12]
print(ob.solve(nums))

입력

[3, 4, 5, 12]

출력

True