1. 프로그래머스 - 하샤드 수
1) 문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
2) 제한사항
- x는 1 이상, 10000 이하인 정수입니다.
3) 입출력 예
arr | return |
10 | true |
12 | true |
11 | false |
13 | false |
4) 내가 짠 코드
function solution(x) {
let answer = 0;
while(x){
answer += (x%10);
x = Math.floor(x/10);
}
if (x % answer === 0) {
return true;
} else {
return false;
}
}
-> 망. 이상하게 True 만 걸림.
5) 다른사람 코드
function solution(x) {
var sum = Array.from(String(x)).reduce((a,b)=>Number(a)+Number(b));
if(x%sum !== 0) return false;
else return true;
}
// Array.from은 배열화하는 메소드임. ex) Array.from('foo') -> Array ["f", "o", "o"]
// 양의 정수 x를 문자열로 만들고 배열 객체화 시킴. 이후 reduce 메소드로 내부 배열의 합.
[출처] [자바스크립트 알고리즘] 하샤드 수 (프로그래머스)|작성자 TSBrain
https://blog.naver.com/inb7902/222431314790
이 분 푸는 거 정말 천재적임.
'코딩 > Javascript' 카테고리의 다른 글
Javascript Algorithm #14 - 두 정수 사이의 합 (0) | 2022.01.20 |
---|---|
Javascript Algorithm #13 - 정수 내림차순으로 배치하기 (0) | 2022.01.19 |
Javascript Algorithm #11 - 정수 제곱근 판별 (0) | 2022.01.18 |
Javascript Algorithm #10 - 자릿수 더하기 (0) | 2022.01.18 |
Javascript Algorithm #9 - 평균구하기 (0) | 2022.01.17 |