본문 바로가기
DEV/JAVA

JAVA로 하샤드 수 구현하기

by 땅콩둘기 2021. 5. 1.
반응형

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

댓글