티스토리 뷰

반응형

문제

N개의 숫자가 입력되면 각 숫자의 자릿수를 더한 값이 가장 큰 수를 출력하시오.
자릿수를 더한 값이 같은 숫자가 있다면 더 큰 숫자를 출력합니다.

 

입력 예제

7
213, 221, 645, 128, 906, 344, 171

 

출력 예제

906

 

 

 

 

 

풀이

방법 1

function solution(n, nums) {
  let answer, max = Number.MIN_SAFE_INTEGER;

  for (let x of nums) {
    let sum = 0, tmp = x;

    // x의 각 자리수 더하기
    while(tmp) { // tmp를 계속 나눠서 0이 되기 전까지
      sum += (tmp % 10); // 10으로 나눴을 때 나머지는 1의 자리 수
      tmp = Math.floor(tmp/10); // 10으로 나눈 몫은 1의 자리 제외한 수
    }

    // 각 자리수를 더한 값이 현재 최댓값보다 큰 경우 
    if (sum > max) {
      max = sum;
      answer = x;
    } else if (sum === max) { // 각 자리수를 더한 값과 현재 최댓값이 같은 경우
      if (x > answer) answer = x;
    }
  }

  return answer;
}

 

 

방법 2

function solution(n, nums) {
  let answer, max = Number.MIN_SAFE_INTEGER;

  for (let x of nums) {
    let sum = x.toString()
              .split('')
              .reduce((acc, cur) => acc + Number(cur), 0);

    // 각 자리수를 더한 값이 현재 최댓값보다 큰 경우 
    if (sum > max) {
      max = sum;
      answer = x;
    } else if (sum === max) { // 각 자리수를 더한 값과 현재 최댓값이 같은 경우
      if (x > answer) answer = x;
    }
  }

  return answer;
}
반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31