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

Python에서 동등한 Domino 쌍의 수

<시간/>

도미노 목록이 있다고 가정합니다. 각 도미노에는 두 개의 숫자가 있습니다. 두 개의 도미노 D[i] =[a, b] 및 D[j] =[c, d]는 a =c 및 b =d 또는 a =d 및 b =c인 경우 동일합니다. 따라서 하나의 도미노를 뒤집을 수 있습니다. 0 <=i

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

  • 대답 =0
  • 도미노 목록의 각 쌍 p에 대해 −
    • 정렬 쌍 p
    • 그런 다음 각 도미노의 빈도를 D에 저장합니다.
  • D의 값에서 b에 대해 -
    • 답 :=답 + (b * (b - 1))/2
  • 반환 응답

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

class Solution(object):
   def numEquivDominoPairs(self, dominoes):
      d = {}
      ans = 0
      for i in dominoes:
         i.sort()
         i = tuple(i)
         if i not in d:
            d[i]= 1
         else:
            d[i]+=1
      for b in d.values():
         ans += ((b*(b-1))//2)
      return ans
ob1 = Solution()
print(ob1.numEquivDominoPairs([[1,2],[2,1],[3,4],[5,6], [4,3]]))

입력

[[1,2],[2,1],[3,4],[5,6],[4,3]]

출력

2