10번 문제   

 

 

 

    내가 풀이한 답   

 

  먼저, 각 자리수의 합을 구해주는 함수를 정의해주고 입력된 n개의 수마다 함수를 호출하였다. 문제에서 요구하는 것은 처음에 입력받은 값(아래 코드에서 num 변수)이였기 때문에 각 자리 수의 합을 비교하는 변수들(res와 max)이 필요했다. 또한, 문제에서 자리수의 합이 같은 경우 값이 가장 큰 값을 출력하라고 했기 때문에 값을 비교하는 변수들(num과 dap)이 필요했다. 

#include <stdio.h>
using namespace std;

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

int main(int argc, char** argv) {
	//freopen("input.txt", "rt", stdin);	
	int n, num, res, max=0, dap, i;
	scanf("%d", &n);
	
	for(i=0; i<n; i++){
		scanf("%d", &num);
		res = digit_sum(num);
		if(res >= max){
			if(res == max){
				max = res;
				dap = (num > dap) ? num : dap;
			} 
			else {
				max = res;
				dap = num;	
			}
		}
	}
	printf("%d\n", dap);
	return 0;
}

 

그 결과 통과를 했다.

 

 


    사이트의 답안   

#include<stdio.h>
int digit_sum(int x){
	int sum=0, tmp;
	while(x>0){
		tmp=x%10;
		sum=sum+tmp;
		x=x/10;
	}
	return sum;
}

int main(){
	freopen("input.txt", "rt", stdin);
	int n, num, i, sum, max=-2147000000, res;
	scanf("%d", &n);
	for(i=1; i<=n; i++){
		scanf("%d", &num);
		sum=digit_sum(num);
		if(sum>max){
			max=sum;
			res=num;
		}
		else if(sum==max){
			if(num>res) res=num;
		}
	}
	printf("%d\n", res);
	return 0;
}

 

  사이트의 답안과 내 코드는 논리적으로 별 다를게 없었다. 

'알고리즘 & 자료구조 > 기초 다잡기' 카테고리의 다른 글

12. 숫자의 총 개수(large)  (0) 2020.09.03
11. 숫자의 총 개수(small)  (0) 2020.09.03
9. 모두의 약수  (0) 2020.09.02
8. 올바른 괄호  (0) 2020.09.02
7. 영어단어 복구  (0) 2020.09.02