프로그래머스

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

jjangsh 2024. 8. 8. 21:17

문제 : 

 

 

내 풀이 :

function solution(x) {
    let sum = 0;
    const digits = x.toString().split('');
    digits.forEach((digit) => {
        sum += Number(digit);
    })
    return x % sum === 0 ? true : false;
}

 

 

다른 사람의 풀이 :

function solution(x) {
    let num = x;
    let sum = 0;
    do {
        sum += x%10;
        x = Math.floor(x/10);
    } while (x>0);

    return !(num%sum);
}

 

do - while문을 사용해서 작성한 풀이이다.

 

 

  1.  do-while 루프는 숫자 x의 각 자릿수를 더하는 작업을 수행한다
  2.  x % 10은 x의 마지막 자릿수를 의미합니다. 이 값을 sum에 더한다.
  3.  그 다음 x = Math.floor(x / 10);는 x에서 마지막 자릿수를 제거한다. Math.floor 함수는 소수점을 버리고 정수 부분만 남 기기 때문에, x는 10으로 나눈 뒤 소수점 아래를 버린 값이 된다.
  4.  이 과정을 x가 0이 될 때까지 반복한다.

 

코드가 깔끔하고 여러 번 형변환을 거치는 내 코드보다 효율적이라고 생각했다.