디사리움(Disarium) 수란?
디사리움 수는 각 자릿수를 자신의 위치에 해당하는 지수만큼 거듭제곱한 뒤 모두 더했을 때, 그 합이 원래 수 자신과 같아지는 수입니다. 공식으로 표현하면 다음과 같습니다.
xy...z = x^1 + y^2 + ... + z^n
여기서 n은 해당 숫자의 총 자릿수입니다.
예시
175가 대표적인 디사리움 수입니다.
175 = 1^1 + 7^2 + 5^3 = 1 + 49 + 125 = 175
각 자릿수인 1, 7, 5를 각각 1제곱, 2제곱, 3제곱한 후 더하면 175가 되므로, 175는 디사리움 수라고 할 수 있습니다.
자바스크립트 구현 코드
숫자를 문자열로 변환한 뒤 각 자릿수를 분리하고, reduce 메서드로 위치 기반 거듭제곱의 합을 계산하는 방식으로 손쉽게 구현할 수 있습니다.
const num = 175;
const isDisarium = num => {
const res = String(num)
.split("")
.reduce((acc, val, ind) => {
acc += Math.pow(+val, ind+1);
return acc;
}, 0);
return res === num;
};
console.log(isDisarium(num));
console.log(isDisarium(32));
console.log(isDisarium(4334));코드 작동 방식
String(num)으로 숫자를 문자열로 변환하고, split("")으로 한 글자씩 배열로 나눕니다. 이후 reduce()를 사용해 각 자릿수를 (인덱스 + 1)번째 거듭제곱하여 누적합을 계산합니다. 마지막으로 계산된 결과가 원래 숫자와 일치하는지 비교하여 true 또는 false를 반환합니다.
실행 결과
콘솔 출력 결과는 다음과 같습니다.
true false false
175는 디사리움 수 조건을 만족하므로 true가 출력되고, 32와 4334는 조건을 만족하지 않기 때문에 false가 출력됩니다.