| 문제 | 레벨 | 정답률 |
|---|---|---|
| 하사드 수 | Lv.1 | 87% |

class Solution {
public boolean solution(int x) {
int sum = calculateDigitSum(x);
return x % sum == 0;
}
private int calculateDigitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
}
우선 전체적인 로직은 간단하다.
각 자리의 숫자 합을 구하고, 나누어 떨어지는지 확인해서 결과를 return.
각 자리 숫자 합을 구하는 건 숫자를 10으로 나누어서 제일 끝에 있는 일의 자리 숫자를 sum에 더하고,
10으로 나누어서 일의 자리 숫자를 제거한다.
이를 숫자가 0이 되기 전까지 반복하면 된다.
각 자릿수의 합을 구하는 방법만 알면 풀 수 있는 문제라, 처음 접하는 사람일 경우에는 공식처럼 외워두는 것도 좋을듯!
- 숫자를 10으로 나눈 나머지를 구한 뒤 더하고, 10으로 나누기!