코딩 기록/자바스크립트 알고리즘

(자바스크립트 알고리즘) 하샤드 수 - kimyang-sun

kimyang-Sun 2020. 10. 12. 19:32

자바스크립트 알고리즘 (Programmers)

하샤드 수!


문제 설명

양의 정수 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;
}