모든 소수가 포함된 배열 num이 있다고 가정합니다. nums에 있는 모든 숫자의 곱이 완전제곱수인지 확인해야 합니다.
따라서 입력이 nums =[3,3,7,7]과 같으면 nums의 모든 요소의 곱이 441이고 21^2 =441과 같은 완전제곱이므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- m :=숫자와 그 빈도의 모든 요소를 포함하는 지도
- nums의 각 키에 대해 다음을 수행합니다.
- m[key]가 홀수이면
- 거짓을 반환
- m[key]가 홀수이면
- 참 반환
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from collections import defaultdict def solve(nums) : m = defaultdict(int) for key in nums : m[key] += 1 for key in nums : if m[key] % 2 == 1 : return False return True nums = [3,3,7,7] print(solve(nums))
입력
[3,3,7,7]
출력
True