문제 :

내 풀이 :
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이 될 때까지 반복한다.
코드가 깔끔하고 여러 번 형변환을 거치는 내 코드보다 효율적이라고 생각했다.
'프로그래머스' 카테고리의 다른 글
[JavaScript] 부족한 금액 계산하기 - 프로그래머스 (0) | 2024.08.12 |
---|---|
[JavaScript] 콜라츠 추측 - 프로그래머스 (0) | 2024.08.09 |
[JavaScript] 문자열 내 p와 y의 개수 - 프로그래머스 (0) | 2024.08.07 |
[JavaScript] 핸드폰 번호 가리기 - 프로그래머스 (0) | 2024.08.06 |
[JavaScript] x만큼 간격이 있는 n개의 숫자 - 프로그래머스 (0) | 2024.08.05 |