완전탐색(브루트포스)-자릿수의 합

Min·2021년 2월 17일
0

CodeKata

목록 보기
22/27
post-thumbnail

문제

N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력
하는 프로그램을 작성하세요. 자릿수의 합이 같은 경우 원래 숫자가 큰 숫자를 답으로 합니다.
만약 235 와 1234가 동시에 답이 될 수 있다면 1234를 답으로 출력해야 합니다.

입력설명

첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 10,000,000를 넘지 않는다.

출력설명

자릿수의 합이 최대인 자연수를 출력한다.

입력예제

7
128 460 603 40 521 137 123

출력예제 1

137

풀이 방법

max로 최댓값을 찾는다.

자릿수의 합

원본 숫자를 tmp에 담아 10으로 나눠 쪼갠다.

tmptmp%10
1288
122
11
function solution(n, arr){
    let answer, max = Number.MIN_SAFE_INTEGER;
    for(let x of arr){
        
        // 1. 숫자로 푸는 방법
        let sum = 0, tmp = x;
        while(tmp){
            sum += (tmp % 10);
            tmp = Math.floor(tmp / 10);
        }
         console.log(sum) // 11, 10, 9 ...
         
        // 2. 문자로 푸는 방법
        let sum = x.toString().split('').reduce((a, b) => a + Number(b), 0);
        console.log(sum) // 11, 10, 9 ...
        
        if(sum > max){
            max = sum;
            answer = x;
        }
        else if(sum === max){
            if(x > answer) answer = x;
        }
    }
    return answer;
}

let arr=[128, 460, 603, 40, 521, 137, 123];
console.log(solution(7, arr));
profile
slowly but surely

0개의 댓글