도미노 목록이 있다고 가정합니다. 각 도미노에는 두 개의 숫자가 있습니다. 두 개의 도미노 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