반응형
JAVA로 하샤드 수 구현하는 함수입니다🤗
먼저 하샤드 수를 알아보겠습니다!
하샤드 수란
하샤드 수 또는 니번 수는 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 그 수가 나누어지는 양의 정수
를 말한다. 즉 이말은 하샤드 수의 정의가 자기자신이 각 자리숫자의 합의 몇 배가 되어서 약수와 배수의 관계가 되는 수를 일컫는 말이다.
출처 : 위키백과
무조건 하샤드 수가 되는 경우
- 10의 거듭제곱인 수 (자명하다. 자릿수의 합이 1이며, 모든 자연수는 1로 나누어떨어지기 때문)
- 1 이상의 한 자리 수 혹은 다른 하샤드 수에 10의 거듭제곱인 수를 곱한 수
- 각 자리의 합이 3이나 9가 되는 수(혹은 합이 6이거나 18이면서 짝수) [1][2]
- 해당 수의 자릿수가 3의 거듭제곱인 동시에 모든 자리의 숫자가 같은 수 즉 3의 거듭제곱의 자리를 가지는 레퓨닛수에 1부터 9까지의 자연수를 곱한수 [3]
- 일의 자리가 0이고 일의 자리를 제외한 각 자리의 합이 2, 3, 5, 6, 9, 10, 15, 18이 되는 수
- 일의 자리가 0, 5, 8이고 일의 자리를 제외한 각 자리의 합이 10이 되는 수[4]
- 자릿수가 3개인 수 중 십의 자리가 0이고 백의 자리와 일의 자리 수의 합이 11인 수
- 그 외 해당되는 숫자에서 각 자리의 합으로 나누어 떨어지는 수[5]
코드
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어지면 x는 하샤드 수 입니다.😋
코딩테스트 연습 중 쉬운단계에 속합니다. 프로그래머스에도 동일한 문제가 있어 프로그래머스에서 풀어보셔도 될 것 같습니다.
package dulgi;
import java.util.*;
class Solution {
public boolean solution(int x) {
boolean answer = true;
int length = (int)(Math.log10(x)+1);
int sum = 0;
int number = x;
for(int i=0;i<length;i++){
sum += x%10;
x /= 10;
}
if(number%sum==0){
answer = true;
}
else{
answer = false;
}
return answer;
}
}
반응형
'DEV > JAVA' 카테고리의 다른 글
스프링부트 사용하기 (0) | 2021.06.03 |
---|---|
스프링부트 CLI 시작하기 (0) | 2021.05.19 |
JAVA로 369게임 만들기 (0) | 2021.04.30 |
JUnit 테스트 해보기 (0) | 2021.04.14 |
JAVA 8의 Optional 사용해보기 (0) | 2021.04.14 |
댓글