반응형
자릿수의 합 비교하기
- 자연수 n을 받고, n개의 자연수를 받는다.
- 각 자연수의 각 자릿수를 모두 더한 값(자릿수의 합)을 비교하여 그 값이 가장 큰 자연수를 출력한다.
- 자릿수의 합이 같을 경우 더 큰 수를 출력한다.
- 예를들어 5를 n으로 입력하고, 125 15232 79 1325 97를 입력하면 97이 출력된다.
풀이
#include <stdio.h>
int digit_sum(int x) {
int tmp,sum = 0;
while (x>0) {
tmp = x % 10;
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=0; i<n; i++) {
scanf("%d", &num);
sum = digit_sum(num);
if (sum > max) {
res = num;
max = sum;
} else if (sum == max) {
if (num > res) res = num;
}
}
printf("%d\n", res);
return 0;
}
- 각 자릿수의 합을 리턴해주는 digit_sum함수를 만들어 구성한다.
- x를 10으로 나눠 x에 넣어주면 소수점이 포함되지 않는다. 그 결과를 마찬가지의 int형 변수(x)에 넣어줬기 때문이다.
- 일반적인 int형 변수의 최대값은 약 2147000000, 최소값은 약 -2147000000이다. (정확히는 2147483647,-2147483647이지만외우기어려우므로 이렇게만 기억하자.)
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 뒤집은 숫자의 소수 여부 판단 (by C++) (0) | 2020.03.13 |
---|---|
[알고리즘 연습] 가장 많이 사용된 자릿수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 숫자의 총 개수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] N까지의 약수 갯수 모두 구하기 (by C++) (0) | 2020.03.12 |
[알고리즘 연습] 영어단어 복구 알고리즘 (by C++) (0) | 2020.03.12 |