스파르타 (React_6기) 본캠프

2024. 08. 16. (알고리즘 - 하샤드 수)

cha123hein 2024. 8. 16. 10:07

★ 문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

(x는 1 이상, 10000 이하인 정수입니다.)

 

★ 문제 해결 과정

1. 우선 각 자리 수의 합을 구하기 위해 각 자리수를 나눈다.(split)

 * split를 사용하기 위해 문자열로 변환한다.

2. for문을 각 문자열의 합을 구한다.

3. 원래 값인 x를 각 문자의 합인 n으로 나눌 때 나머지가 0이 되면 true, 아니면 false로 결과값이 나오도록 한다.

 

★ 제출한 문제 답안

function solution(x) {
    let n = 0;
    let arr = String(x).split("");
        for(let i = 0; i<arr.length; i++){
            n += Number(arr[i])
        }
    return x % n ===0 ? true : false;
}