N개의 자연수가 주어졌을 때 각 자리수의 합이 가장큰 수를 출력하시오.
137
const solve = (arr) => {
// 자릿수의 합이 최대인 수를 출력한다.
let answer = 0, max = Number.MIN_SAFE_INTEGER;
for(let x of arr) {
let sum = 0, temp = x;
while(temp) {
sum += (temp % 10);
temp = Math.floor(temp / 10);
}
if (sum > max) {
answer = x;
max = sum;
} else if (sum === max) {
if (answer < x) answer = x
}
}
return answer
}
solve([137, 333, 123, 40, 521, 128, 123])
while 문 대신
let sum = x.toString().split('').reduce((a,b) => a + Number(b) , 0)
이런식 으로도 작성이 가능하다. 문자열 이기 때문에 초기값인 0 을 제외하고 더해주는 b 에다가 Number 만 해주면 while 문 대신 작성이 가능하다!