Programmers/Level 1
[프로그래머스 / JavaScript] - 하샤드 수
LaKinRad
2022. 5. 4. 11:59
출처/프로그래머스
● 문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
● 제한 조건
- x는 1 이상, 10000 이하인 정수입니다.
● 입출력 예
arr | return |
10 | true |
12 | true |
11 | false |
13 | false |
● 입출력 설명
입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.
하샤드 수
주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어 떨어지는 자연수를 말한다.
하샤드 수의 간단한 예는 위의 입출력 설명을 참고하면 될 것 같다.
나의 풀이
function solution(x) {
return x % x.toString().split("").reduce((acc, val) => acc += Number(val), 0) === 0;
}
숫자 x를 배열로 만들고, reduce() 를 사용하여 return 값을 0과 비교하여 true, false 를 return 했다.
처음에는 삼항 연산자로 true, false를 return 했으나,
생각해보니 삼항 연산자를 쓰지 않아도 어짜피 0과 비교하여 true, false가 return 되기 때문에 수정했다.