728x90
반응형

▣ 문제

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


▣ 입력설명

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


▣ 출력설명

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


▣ 입력예제 1 

5 
125 15232 79 1325 97 


▣ 출력예제 1

97

 

 

코드 : 

# include <stdio.h>
# include <stdlib.h>
# include <limits.h>

int digit_sum(int x)
{
	int tmp = 0,sum=0;
	while(x > 0)
	{
		tmp = x%10;
		sum += tmp;
		x/=10;
	}
	
	return sum;
}

int main()
{
	int n,i,j;
	int max = INT_MIN,sum=0,temp=0;
	scanf("%d",&n);
	
	int *arr = (int*)malloc(sizeof(int) * n);
	
	for(i = 0; i<n; i++)
	{
		scanf("%d",&arr[i]);
		sum = digit_sum(arr[i]);
		
		if(sum > max)
		{
			max = sum;
			temp = arr[i];
		}
		else if(sum == max)
		{
			if(arr[i] > temp)
			{
				temp = arr[i];
			}
		}
	}
	printf("%d",temp);
	
	
	
	free(arr);
	
	return 0;
}

 

 

출처 : 인프런 C++을 이용한 창의적 문제 해결

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기