양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
x | return |
---|---|
10 | true |
12 | true |
11 | false |
13 | false |
do~while
문을 사용해서 풀어보려고 했는데 처음 써보는거라 뭐가 문제인지 잘 모르겠어서 결국 split
사용해서 풀었다..
function solution(x) {
let arr = String(x).split("").map(Number);
// do {
// arr.push(x % 10);
// x = Math.floor(x / 10);
// } while (x > 0)
console.log(x);
console.log(arr);
if ((x % arr.reduce((a, b) => a + b)) == 0) return true;
else return false;
}
내가 처음 사용하려던 방식... 내가 한 방식대로 하면 x가 계속 0으로 나와서 결과값이 true만 출력되었는데 이렇게 해야 하는 거였구나
function solution(x) {
let num = x;
let sum = 0;
do {
sum += x%10;
x = Math.floor(x/10);
} while (x>0);
return !(num%sum);
}