문제
풀이 코드
function solution(x) {
let stringTox = x + '';
let sum;
sum = stringTox.split('').reduce((s, current) => s + current * 1, 0);
return x % sum === 0;
}
풀이 과정
문자열 함수, 배열 함수를 사용하여 구현 하였다!
1) x 에 '' 빈 문자를 더하여 String 으로 변환하고, 이를 stringTox 변수에 담았다.
2) split 함수를 이용해 문자열의 각 요소를 배열로 만들었고, 해당 배열을 reduce 함수를 통해 모두 더해주었다, 더한 값을 sum 에 저장
3) x 와 sum 과의 나머지 연산에서 나머지가 없으면 하샤드 수 true 를 반환하게 구현했다.
슬슬 자바스크립트의 문자열과 배열의 함수에 대해 조금씩 익숙해 지고 있는거 같아 뿌듯하다!!! ㅎㅎ
다른사람의 코드
function solution(x) {
let num = x;
let sum = 0;
do {
sum += x%10;
x = Math.floor(x/10);
} while (x>0);
return !(num%sum);
}
함수를 사용해서 구현하는것도 좋지만,
반응을 보니 아무래도 수학적으로 접근하는게 더 빠르다고 한다
물론 이런 간단한 문제에서는 효율이 차이가 나봤자 이지만
프로그래밍적으로 생각하면 속도도 중요하니 너무 함수에 의존하면 안되겠다.