Leetcode Java Perfect Number
업데이트:
문제
코드
class Solution {
public boolean checkPerfectNumber(int num) {
if (num == 1) {
return false;
}
int sum = 1;
for (int idx = 2; idx * idx <= num; idx++) {
if (num % idx == 0) {
sum += idx + (num / idx);
}
}
return sum == num;
}
}
결과
설명
- num이 완전수로 이루어졌는지 검증하는 문제이다.
- 완전수는 양의 제수의 합과 동일한 양의 정수로, 정수 x의 제수는 x를 균등하게 나눌 수 있는 정수이다.
- 예를 들어, $28 = 1 + 2 + 4 + 7 + 14$는 완전수이다.
-
nums이 1인 경우 자기 자신을 균등하게 나눌 수있는 양의 정수가 없으므로, 주어진 문제의 결과로 false를 반환한다.
-
sum은 완전수를 검증하기 위한 합계를 위한 변수로, 첫 값인 1로 초기화한다.
- 2부터 idx의 제곱이 sum보다 작을 때 까지 idx를 증가하여 아래를 검증한다.
- num을 idx로 나머지 없이 나눌 수 있을 경우, sum에 idx와 $\frac{num}{idx}$의 합을 더해준다.
- idx와 $\frac{num}{idx}$의 곱은 num으로, num의 두 제수의 합을 의미한다.
- num을 idx로 나머지 없이 나눌 수 있을 경우, sum에 idx와 $\frac{num}{idx}$의 합을 더해준다.
- 반복이 완료된 경우 sum과 num이 동일한지 검증하여, 해당 결과를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기