코딩테스트

[JS] 연습문제 > 하샤드 수

차차한 2022. 8. 29. 09:37

function solution(x) {
    
    var arr = (x+"").split("")
    
    var sum = arr.reduce((acc,v)=>Number(acc)+Number(v));
    
    return x % sum == 0;
}

숫자 X의 각 자릿수를 모두 더한 값으로 x를 나누었을 때 나머지가 0이 되면 true를 반환해야 한다.

각 자릿수를 모두 더해주기 위해 x를 문자열로 만든 후 split으로 배열에 담아줬다.

그 후에 reduce를 사용해서 인덱스 값마다 더해줬는데, 이때 Number로 형변환을 해주지 않으면 배열이 ['1','3]인 경우 문자열로 더해져 13을 리턴하게 된다.

마지막으로 x % sum(자릿수 모두 더한 값)을 나누었을 때 나머지가 0이면 true를 반환하도록 한다.