치악산 복숭아

[프로그래머스] 하샤드 수 - Javascript 본문

PS:0

[프로그래머스] 하샤드 수 - Javascript

Juliie 2020. 9. 16. 16:50

링크

programmers.co.kr/learn/courses/30/lessons/12947

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하�

programmers.co.kr


문제 설명

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.


제한 조건

  • x는 1 이상, 10000 이하인 정수입니다.

문제 풀이

1) 코드 설명

 (1) 매개변수로 받은 수 x를 string형으로 바꾼다.

 (2) res에 숫자형으로 바꾼 x의 각 자릿수의 합을 더한다.

 (3) x가 res로 나누어 떨어진다면 true를 return하고, 그렇지 않다면 false를 return한다.

 

2) 코드

//200916
function solution(x) {
    var answer = true;
    var str = x.toString();
    var res = 0;
    
    for(var i = 0; i<str.length; i++) 
        res += Number(str.charAt(i));
    
    (x % res == 0) ? answer = true : answer = false;
    return answer;
}

수정한 코드

//210507
function solution(x) {
    let result = 0;
    x.toString().split("").forEach(item => result += parseInt(item))
  return x%result == 0;
}

 

ES6 문법 써보려고 노력한 흔적...⁺( ᵒ̴̶̷̥́ ·̫ ᵒ̴̶̷̣̥̀ )

속도는 숫자로 접근하는게 더 빠르다고 한다 toString이랑 parseInt 써서 형변환 이루어져서 그런듯🤔

그래도 새로운 시도를 해봤다는 것에 (나 혼자) 의의를!

Comments