📄문제
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 int digit_sum(int x)를 꼭 작성해서 프로그래밍 하세요.
⬇️ 입력
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 10,000,000를 넘지 않는다.
5 125 15232 79 1325 97 |
⬆️ 출력
자릿수의 합이 최대인 자연수를 출력한다. 자리수의 합이 최대인 자연수가 여러개인 경우 그
중 값이 가장 큰 값을 출력합니다.
97 |
📝 풀이
#include <iostream>
int digit_sum(int x);
int main()
{
int digitSumMax = INT_MIN;
int answer = 0;
int N, numInput;
scanf_s("%d", &N);
for (int i = 0; i < N; ++i)
{
scanf_s("%d", &numInput);
int digitSum = digit_sum(numInput);
if (digitSum == digitSumMax)
answer = answer > numInput ? answer : numInput;
else if (digitSum > digitSumMax)
{
answer = numInput;
digitSumMax = digitSum;
}
}
printf("%d", answer);
}
int digit_sum(int x)
{
int sum = 0;
while (1)
{
sum += x % 10;
x /= 10;
if (x == 0)
return sum;
}
}
- digit_sum 함수에서 각 자리수를 추출하여 sum에 더해 리턴합니다.
- 리턴한 값 digitSum이 digitSumMax보다 크다면, 갱신하고, 둘이 같다면 input중 큰것을 선택하여 갱신합니다.
- 위 과정을 반복하여 정답을 출력합니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 가장 많이 사용된 자릿수 (1) | 2023.10.13 |
---|---|
[C++] 숫자의 총 개수 (0) | 2023.10.13 |
[C++] 모두의 약수 (0) | 2023.10.13 |
[C++] 올바른 괄호 (0) | 2023.10.13 |
[C++] 영어단어 복구 / scanf 공백 포함 입력받기 (0) | 2023.10.13 |