[JS.알고리즘] 자리수 합 구하기

houndhollis·2024년 6월 24일
0

문제설명📘

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])
  1. while 문을 보면, temp가 있을 때 까지 실행이 된다.
  • % 를 사용하여 자릿수를 구한다음 sum 에 더해주고
  • / 를 사용해 몫의 마지막 자리수를 지워준다. Math.floor를 사용하여 정수를 반환해준다.
  1. else if (sum === max) 조건문을 통해, 같을 경우 큰수를 리턴해 주는 식을 작성 하였다.

while 문 대신
let sum = x.toString().split('').reduce((a,b) => a + Number(b) , 0)
이런식 으로도 작성이 가능하다. 문자열 이기 때문에 초기값인 0 을 제외하고 더해주는 b 에다가 Number 만 해주면 while 문 대신 작성이 가능하다!

profile
한 줄 소개

0개의 댓글