[알고리즘] 자릿수의 합 - Brute force (완전 탐색)

newsilver·2021년 5월 18일
0

Algorithm

목록 보기
1/30

문제

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

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

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

✏️ 입력예제 1
7
128 460 603 40 521 137 123

✏️ 출력예제 1
137


풀이

 function solution(n, arr) {
            let temp = 0;				// 문자로 변환한 배열의 엘리먼트
            let sum = 0;				// 자릿수의 합
            let max = Number.MAX_SAFE_INTEGER;		// 자릿수의 합 중 제일 큰 값
            let result = 0;				// 원래 배열의 수
            for (let i = 0; i < n; i++) {
                temp = arr[i].toString();		// arr[i]를 문자로 변경
                for (let j = 0; j < temp.length; j++) {
                    sum += Number(temp.charAt(j));	
                  // 자릿수를 숫자로 다시 변환하여 sum에 더함.
                }
            	console.log(arr[i]+" 자릿수 합 : "+sum);
                if (sum > max) {	// 자릿수의 합이 max보다 크면
                    max = sum;		// sum을 max에 대입
                    result = arr[i];	// 원래 수를 result에 대입
                } else if (sum === max) {	// sum과 max가 같은 경우
                    if (arr[i] > result) {	// 현재 수와 result를 비교해 현재 수가 크면
                        result = arr[i]; 	// result에 현재 수 더함.
                    }
                }
                console.log("최대값 : "+max);
                sum = 0;		// sum 초기화
                temp=0;			// temp 초기화
            }
	    console.log("====================");
            console.log("결과 : "+ result);

            return result;
        }

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


✏️ 문제 출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

profile
이게 왜 🐷

0개의 댓글