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

Python의 공정한 사탕 교환

<시간/>

A와 B가 두 친구라고 가정합니다. 다양한 크기의 캔디바가 있습니다. 여기서 A[i]는 A가 소유한 i번째 막대의 크기이고 B[j]는 B가 소유한 j번째 막대의 크기입니다.

그들은 친구이기 때문에 교환 후에 A와 B가 같은 사탕을 갖게 되도록 각각 하나의 막대 사탕을 교환하려고 합니다. (사람이 가지고 있는 캔디의 총량은 그들이 가지고 있는 캔디바 크기의 합입니다.) ans라고 가정하면 정수 배열을 반환해야 합니다. 여기서 ans[0]은 A가 교환해야 하는 캔디바의 크기이고, as[1]은 B가 교환해야 하는 캔디바의 크기입니다. 답변이 여러 개인 경우 그 중 하나만 반환합니다.

예를 들어, A =[1, 2]이고 B =[2, 3]이면 출력은 [1, 2]

가 됩니다.

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

  • A의 합과 B의 합 사이의 차를 2로 나누고 정수 부분을 diff로 취합니다.
  • B를 집합으로 변환
  • for i in A
    • b에서 i – diff인 경우 [i, i – diff]를 반환합니다.

예시

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

class Solution(object):
   def fairCandySwap(self, A, B):
      diff = (sum(A) - sum(B))//2
      B=set(B)
      for i in A:
         if i- diff in B:
            return [i,i-diff]
ob1 = Solution()
print(ob1.fairCandySwap([1,2], [2,3]))

입력

[1,2]
[2,3]

출력

[1,2]