본문 바로가기

CodingTest Exam/[C++] Algorithm Study

10. 자릿수의 합 (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★☆☆☆

#include<stdio.h>

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

int main(){
	int n;
	scanf("%d", &n);
	
	int a[n];
	for(int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	
	int max_sum = 0;
	int num = 0;
	for(int i = 0; i < n; i++)
	{
		int sum = digit_sum(a[i]);
		if(sum > max_sum)
		{
			max_sum = sum;
			num = a[i];
		}
		else if(sum == max_sum)
		{
			if(a[i] > num)
				num = a[i];
		}
	}
	
	printf("%d", num);
	return 0;
	
}

1. 자릿수의 합은 % 연산자로 구한다.

2. int a[n] 선언 후 scanf("d", &a)로 하지않고 for문으로 하는 이유는 다음과 같다.

int a[8] 의 모습 (0으로 초기화)

0 0 0 0 0 0 0 0

1) scanf("d", &a)로 15252를 입력받았을 때

1 5 2 5 2 0 0 0

2) for문으로 15252 를 받았을 때

15252 0 0 0 0 0 0 0