프로그래머스 1단계 : 하샤드 수
코딩테스트 연습 > 연습문제 > 하샤드 수
✔ 문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
✔ 제한 사항
x는 1 이상, 10000 이하인 정수입니다.
✔ 입출력 예
arr | answer |
---|---|
10 | true |
12 | true |
11 | false |
13 | false |
✔ 문제풀이
function solution(x) {
var sum = 0;
var answer = true;
var arr = String(x).split("");
for(let i=0; i < arr.length; i++){
sum += Number(arr[i])
}
return (x % sum == 0) ? true:false ;
}
✔ 설명
String과 split을 사용해 문자열로 만든뒤 각각 자릿수를 쪼개줍니다. for문을 돌려 Number로 숫자로 변환해준뒤 각 자릿값을 더해 나누었을 때 0이되면 true 아니면 false가 나오게 만듭니다. 참 쉽죠?
✔ 다른사람의 풀이
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
스플릿과 reduce를 사용해 하샤드 수인지 확인해보았는데요, 한줄로 식은 깔끔하지만 가독성은 아쉬운거같습니다.. 이렇게 푸시려면 정진하셔야겠죠?
댓글