N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 자릿수의 합이 같은 경우 원래 숫자가 큰 숫자를 답으로 합니다. 만약 235 와 1234가 동시에 답이 될 수 있다면 1234를 답으로 출력해야 합니다.
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 10,000,000를 넘지 않는다.
자릿수의 합이 최대인 자연수를 출력한다.
입력
7
128 460 603 40 521 137 123
출력
137
각 자릿 수의 합을 10으로 나눈 나머지를 더하면서 구해도 되고,
배열로 잘라 reduce를 이용해 합을 구해서 진행해도 된다.
const solution = (input) => {
const [N, arr] = input.split("\n");
const nums = arr.split(" ");
let [max, answer] = [0, 0];
for (let n of nums) {
// let [sum, tmp] = [0, n];
// while (tmp) {
// sum += tmp % 10;
// tmp = Math.floor(tmp / 10);
// }
const sum = n.split("").reduce((acc, curr) => acc + curr * 1, 0);
if (sum > max) {
max = sum;
answer = n;
} else if (sum === max) {
if (n > answer) answer = n;
}
}
return answer;
};
const a = solution("7\n128 460 603 40 521 137 123");
console.log(a); // 137