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

Python의 그룹 정수

<시간/>

nums라는 숫자 목록이 있다고 가정하고 다음과 같이 목록을 1개 이상의 그룹으로 나눌 수 있는지 확인해야 합니다. 1. 각 그룹의 크기가 2보다 크거나 같습니다. 2. 모든 그룹의 크기가 동일합니다. . 3. 각 그룹에 있는 모든 숫자는 동일합니다.

따라서 입력이 [3, 4, 6, 9, 4, 3, 6, 9]와 같으면 출력은 True가 됩니다.

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

  • counts :=각 키가 고유한 요소이고 값이 빈도인 맵
  • 온도 :=0
  • 카운트의 각 카운트에 대해 다음을 수행합니다.
    • temp가 0과 같으면
      • temp :=count[count]
    • 그렇지 않으면
      • temp :=counts[count] 및 temp의 gcd
    • temp가 1과 같으면
      • 거짓을 반환
  • 참 반환

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

from collections import Counter
import math
class Solution:
   def solve(self, nums):
      counts = Counter(nums)
      temp = 0
      for count in counts:
         if temp == 0:
            temp = counts[count]
         else:
            temp = math.gcd(counts[count], temp)
            if temp == 1:
               return False
      return True
ob = Solution()
L = [3, 4, 6, 9, 4, 3, 6, 9]
print(ob.solve(L))

입력

[3, 4, 6, 9, 4, 3, 6, 9]

출력

True