[Algorithm] 10. 자릿수의 합

웹 개발자 호머

인트로

알고리즘 코드는 C 또는 C++ 기반으로 작성되었습니다.

 

자릿수의 합 구하기

알고리즘 기초에서 참 많이 보는 문제 유형같다.

예를 들어 123을 321로 바꾸기, 각 자릿수의 합을 구하기, 가장 많이 사용된 숫자 구하기 등 기본 원리만 알고가면 쉽다.

 

자릿수의 합

 

문제

N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요.
각 자연수의 자릿수의 합을 구하는 함수를 int digit_sum(int x)를 꼭 작성해서 프로그래밍 하세요.

※입력설명
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요.

※출력설명
자릿수의 합이 최대인 자연수를 출력한다. 자리수의 합이 최대인 자연수가 여러개인 경우 그 중 값이 가장 큰 값을 출력합니다.

입력

5
125 15232 79 1325 97

출력

97

 

123을 321로 바꾸기, 각 자릿수의 합을 구하기, 가장 많이 사용된 숫자 구하기 등 해결 방식은 동일하다.

가장 기본적인 해결법으로 123에서 3을 추출하고 12에서 2를 추출하고 1에서 1을 추출하는 방식이다.

각 자릿수의 합을 구하는 방법도 동일하다.

#include <iostream>

using namespace std;

int digit_sum(int num)
{
	int res = 0;

	while (num > 0)
	{
		res += num % 10;
		num = num / 10;
	}

	return res;
}

int main()
{
	int count, num, sum, maxSum = 0, res;

	cin >> count;

	for (int i = 0; i < count; i++)
	{
		cin >> num;

		sum = digit_sum(num);

		if (sum > maxSum)
		{
			maxSum = sum;
			res = num;
		}
		else if (sum == maxSum)
		{
			res = num > res ? num : res;
		}
	}

	cout << res;
}