[Algorithm] 자릿수의 합 (javaScript)

swing·2023년 6월 29일
1

[Algorithm]

목록 보기
53/96

문제

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
profile
if(기록📝) 성장🌱

0개의 댓글