양의 정수 x가 하샤드 수이면 true, 아니면 false를 반환하는 문제이다.
"하샤드 수" 는 각 자릿수의 합으로 나누어지는 수를 말한다.
x = 18 → 자릿수 합: 1+8=9 → 18%9=0 → true
x = 13 → 자릿수 합: 1+3=4 → 13%4=1 → false
x가 자릿수 합으로 나누어 떨어지는지 확인n % 10으로 마지막 자리 수를 추출하고 n / 10으로 제거한다.
x = 18
1회: 18 % 10 = 8 → sum=8, n=1
2회: 1 % 10 = 1 → sum=9, n=0
n=0 → while 종료
18 % 9 = 0 → true ✅
자릿수 합을 구한 뒤 x % sum == 0이면 하샤드 수이므로 true, 아니면 false를 반환하면 된다.
구체적으로 정리한 풀이 흐름:
n % 10과 n / 10으로 자릿수 합 계산x % sum == 0으로 하샤드 수 여부 판별 후 반환class Solution {
public boolean solution(int x) {
int sum = 0;
int n = x;
while (n > 0) {
sum += n % 10;
n = n / 10;
}
return x % sum == 0;
}
}
