프로그래머스
[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문을 사용해서 작성한 풀이이다.
- do-while 루프는 숫자 x의 각 자릿수를 더하는 작업을 수행한다
- x % 10은 x의 마지막 자릿수를 의미합니다. 이 값을 sum에 더한다.
- 그 다음 x = Math.floor(x / 10);는 x에서 마지막 자릿수를 제거한다. Math.floor 함수는 소수점을 버리고 정수 부분만 남 기기 때문에, x는 10으로 나눈 뒤 소수점 아래를 버린 값이 된다.
- 이 과정을 x가 0이 될 때까지 반복한다.
코드가 깔끔하고 여러 번 형변환을 거치는 내 코드보다 효율적이라고 생각했다.