양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
arr | return |
---|---|
10 | true |
12 | true |
11 | false |
13 | false |
하샤드 수의 규칙과 출력 조건을 보면 이렇다.
- 18 = 1 + 8 = 9 / 18 % 9 = 0 (나머지가 0, 나누어 떨어지면 true)
- 11 = 1 + 1 = 2 / 11 % 2 = 1 (나누어 떨어지지 않으므로 false)
- ab = a + b = sum(a,b) / ab % sum(a,b) = 0이면 true, 0이 아니면 false
그럼 이제 나머지를 이용해 0일 경우에 true을 출력하면 되겠다.
function solution(x) { // x = 18
var sum = 0;
var arr = String(x).split(""); // [1,8]
for(let i=0; i<arr.length; i++){
sum += Number(arr[i]) // 1+8
}
return (x % sum == 0) ? true:false;
}
나는 여기서, 삼항연산자를 사용해 조건을 넣어주었다.
복잡한 조건문은 삼항연산자를 사용하기엔 가독성이 떨어진다는 단점이 있지만, 여기에서 간단한 조건문은 오히려 삼항연산자가 가독성이 뛰어난다.