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