배열 num이 있다고 가정하고 이 배열에 일부 정수의 제수가 모두 포함되어 있는지 여부를 확인해야 합니다.
따라서 입력이 nums =[1, 2, 3, 4, 6, 8, 12, 24]와 같으면 출력은 24의 제수이므로 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 최대 :=최대 숫자
- temp :=새 목록
- 1에서 최대값의 제곱근 범위에 있는 i에 대해 다음을 수행합니다.
- 최대값을 i로 나눌 수 있는 경우
- temp의 끝에 i 삽입
- (최대 / i)의 몫이 i와 같지 않으면
- temp의 끝에 (maximum / i)의 몫 삽입
- temp의 크기가 num의 크기와 같지 않으면
- 거짓을 반환
- 목록 번호 및 임시 정렬
- 0부터 숫자 - 1까지의 범위에 있는 i에 대해
- temp[i]가 nums[i]와 같지 않으면
- 거짓을 반환
- temp[i]가 nums[i]와 같지 않으면
- 최대값을 i로 나눌 수 있는 경우
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시 코드
from math import sqrt def solve(nums): maximum = max(nums) temp = [] for i in range(1,int(sqrt(maximum))+1): if maximum % i == 0: temp.append(i) if (maximum // i != i): temp.append(maximum // i) if len(temp) != len(nums): return False nums.sort() temp.sort() for i in range(len(nums)): if temp[i] != nums[i]: return False return True nums = [1, 2, 3, 4, 6, 8, 12, 24] print(solve(nums))
입력
[1, 2, 3, 4, 6, 8, 12, 24]
출력
True