코딩 기록/자바스크립트 알고리즘
(자바스크립트 알고리즘) 하샤드 수 - kimyang-sun
kimyang-Sun
2020. 10. 12. 19:32
하샤드 수!
문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
- x는 1 이상, 10000 이하인 정수입니다.
입출력 예
문제 풀이
function solution(x) {
let sum = String(x).split("").reduce((acc, cur) => acc + Number(cur), 0);
return !(x % sum)
}
풀이입니다.
String(x) 를 통해서 인자를 문자열로 바꿔주고 split("")을 통해 배열로 나눠줍니다.
reduce()를 사용하기 위해서 말이죠.
reduce()를 이용하여 초기값은 0으로 설정해주고 배열 수만큼 반복해서 acc에 cur값을 숫자로 변형시켜 더해줍니다.
그 후 x % sum 을 통해 그 값이 완전히 나누어진다면 true를 리턴하고 그렇지 않으면 false가 리턴되도록 합니다.
다른 사람들의 풀이
function Harshad(n){
var result ;
var str = n.toString();
var sum = parseInt(str[0]);
for(let i=1 ; i< str.length ;i++){
sum += parseInt(str[i]);
}
result = n % sum ? false : true
return result;
}