양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
x는 1 이상, 10000 이하인 정수입니다.
x | return |
---|---|
10 | true |
12 | true |
11 | false |
13 | false |
function solution(x) {
let accValue = [...(x.toString())].reduce((acc, curr) => acc + +curr, 0);
return x % accValue === 0;
}
이전 문제와 비슷하게 x를 먼저 문자열 배열로 만들어주고 각 요소의 누적값을 구하기 위해 reduce()
를 사용하였다. 각 요소의 타입은 문자열이기 때문에 요소끼리 더하기 전에 +curr
을 통해 숫자 타입으로 먼저 바꿔주었다. 출력값이 true/false이기 때문에 따로 삼항연산자는 사용하지 않았다.