function sumDigPow(a, b) {
const answer = [];
for(let i=a;i<=b;i++){
const numList = [];
const checkNum = String(i).split('')
for(let k=0;k<checkNum.length;k++){
numList.push(Math.pow(parseInt(checkNum[k]),k+1))
};
const property = numList.reduce((a,b)=>a+b);
if(property === i){
answer.push(i)
}
}
return answer
}
a부터 b까지 1씩 더해가면서 모든 경우를 탐색한다. 숫자를 받아 각자리수대로 쪼개서 계산한다.
function sumDigPow(a, b) {
var ans = [];
while(a <= b){
if(a.toString().split('').reduce((x,y,i)=>x + +y ** (i + 1),0) == a)
ans.push(a);
a++;
}
return ans;
}
reduce
문에 3번째, 4번째 인자로 인덱스와 배열을 받을 수 있다는 걸 까먹고 있었다.. reduce
는 기본적으로는 accumulator
와 currentValue
를 인자로 받는다. 추가적으로는 currentValue
의 index
, 함수를 호출한 array
자체를 인자로 받을 수 있다.