코딩/Javascript

Javascript Algorithm #12 - 하샤드 수

AMD만세 2022. 1. 19. 14:11

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

 

[자바스크립트 알고리즘] 하샤드 수 (프로그래머스)

오늘은 하샤드 수를 판단하는 알고리즘 문제를 해보도록 하겠습니다. 문제 양의 정수 x 가 하샤드 수이려면...

blog.naver.com

이 분 푸는 거 정말 천재적임.