/*
문제 : 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하라
자료 : 자연수 x
조건 : 조건에 일치하면 true, 아니면 false를 반환
계획 :
자릿수의 합을 더한 값이 원래값으로 나누어떨어지는지 확인
반복문으로 각자리수를 모두 한뒤 x % sum === 0이면 true
반성 :
문자열로 변환해서 풀면 시간이 오래걸리는데 숫자로 푸는 거는 익숙하지 않다.
이 풀이를 이용해서 자연수 뒤집어 배열만들기를 다시 한 번 풀어봐야겠다.
Math.floor(): 소수점 이하를 버림한다
Math.ceil(): 소수점 이하를 올림한다.
Math.round(): 소수점 이하를 반올림한다.
*/
const sum = (number) => {
if (number < 10) {
return number;
}
return (number % 10) + sum(Math.floor(number / 10));
};
// 숫자 풀이
const solution = (x) => {
return x % sum(x) === 0;
};
// 문자 풀이
const solution2 = (x) => {
const numbers = String(x).split('');
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum = sum + Number(numbers[i]);
}
return x % sum === 0;
};
'Algorithm' 카테고리의 다른 글
[JavaScript] 프로그래머스 - 문자열을 정수로 바꾸기 (0) | 2022.09.21 |
---|---|
[JavaScript] 프로그래머스 - 정수 내림차순으로 배치하기 (0) | 2022.09.21 |
[JavaScript] 프로그래머스 - 문자열 내 p와 y의 개수 (0) | 2022.09.20 |
[JavaScript] 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2022.09.20 |
[JavaScript] 프로그래머스 - 정수 제곱근 판별 (0) | 2022.09.20 |