1. 문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
2. 제한 조건
x는 1 이상, 10000 이하인 정수입니다.
3. 예시
입력/출력
4. 풀이
[toString / split / reduce]
- x를 문자로 바꿔준다. toString
ex. 10 -> '10' - 배열로 바꿔준다. split("")
ex '10' -> ['1','0'] - reduce 메쏘드를 활용해 각 배열을 합산해 준다.
- 합산 할 때는 문자열로 반환하지 않게 초기값 0(숫자)으로 설정하고 더해지는 숫자를 parseInt를 활용해 숫자로 바꿔준다. ex. 0 + '1' 아니라 0 + 1 이 되도록
- x의 값이 a로 나눴을 때 나머지가 0 이면 true(answer)로 만든다.
function solution(x) {
var answer = true;
let a = 0;
a = x.toString().split("").reduce((acc,curr) => acc + parseInt(curr),0)
answer = (x % a === 0)
return answer;
}
[a 변수 삭제]
특이사항은 parseInt를 안쓰고 +를 써서 정수로 변환해줌
function solution(x) {
var answer = true;
answer = x % (x.toString().split("").reduce((acc,curr) => +acc + +curr)) == 0
return answer;
}
'개발 공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스 알고리즘] "콜라츠 추측" JavaScript / while, for (0) | 2022.03.16 |
---|---|
[프로그래머스 알고리즘] "정수 제곱근 판별" JavaScript / Math.sqrt (), Math.pow() (0) | 2022.03.16 |
[프로그래머스 알고리즘] "제일 작은 수 제거하기" JavaScript /Math.min(), ES6/ES2015, ES6/ES2016, .splice(), indexOf() (0) | 2022.03.16 |
[항해 99 모의고사 알고리즘] "신대륙 발견" JavaScript / .new Date(), for, while (0) | 2022.03.15 |
[항해 99 모의고사 알고리즘 ] "몇시간 했더라?" JavaScript (0) | 2022.03.15 |