728x90
반응형

문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

x return
10 true
12 true
11 false
13 false

▶ 제한사항

  • x는 1 이상, 10000 이하인 정수입니다.

 

 

Solution 코드

class Solution {
    public boolean solution(int x) {
        int harshadNumber=0;
        int temp=x;
        
        //자릿수 합 구하기
        while(temp!=0){
            harshadNumber+=temp%10;
            temp/=10;
        }
        
        if(x%harshadNumber==0)
            return true;
        else
            return false;
    }
}
  • 자릿수의 합을 구하기 위해서는 x를 10으로 나눈 나머지 값을 harshadNumber 변수에 저장하고, x의 값을 10으로 나눈 값으로 나머지 값을 구하는 것을 반복한다. 만약 18이라면 18을 10으로 나눈 나머지인 8이 저장되고, 10으로 나눈 값인 1으로 연산을 반복한다. 1을 10으로 나눈 나머지인 1을 더하면 자릿수 합은 9이다.
  • x를 자릿수 합을 모두 더한 harshadNumber 값으 나누었을 때의 나머지가 0이라면 harshadNumber는 하샤드 수이다. 18을 9로 나누었을 때의 나머지 값은 0이기 때문에 하샤드 수임을 의미한다. 
728x90
반응형

+ Recent posts