728x90
[목적]
입력 하고 싶은 개수를 먼저 입력 한 후, 해당 개수만큼 숫자를 입력받아 각 숫자들의 자릿수를 더해 가장 큰 합이 나온 숫자를 출력한다.
단, 자릿수를 더한 값이 가장 큰 숫자가 여럿일 경우 숫자 중 가장 큰 수를 출력한다.
[입력예제]
5
125 15232 79 1325 97
[출력예제]
97
5개를 입력받고 나면 그 중 자릿수 합이 가장 큰 숫자를 찾는다.
자릿수 합이 가장 큰 숫자는 '79'와 '97'이다.
이 두 수 중 더 큰 수는 '97'이기에 '97'을 출력한다.
[코드]
#include <iostream>
using namespace std;
//자릿수를 더하는 함수
int digit_sum(int x){
int num = 0;
//받아온 x(i)와 10을 나눈 나머지를 num에 저장 후 x(i)의 일의자리 수를 없앤다.
for(int i=x; i>0; i/=10) num+=i%10;
return num;
}
int main(void) {
int num, arr, res, max=-2147000000, temp=0;
cin >> num;
for(int i=0; i<num; i++){
cin >> arr;
//자릿수를 더하는 함수로 입력받은 값 전송
res = digit_sum(arr);
//자릿수를 더한값이 가장 큰 입력값 저장
if(res>max){
max = res;
temp = arr;
}
//자릿수를 더한값이 같을 경우 숫자가 더 큰 입력값 저장
else if(res == max){
if(temp < arr)
temp = arr;
}
}
cout << temp;
return 0;
}
digit_sum함수는 각 자릿수를 더하는 함수이다.
해당 함수에서의 for문은 while문으로 아래와 같이 변경 가능하다.
int digit_sum(int x){
int tmp, sum=0;
while(x>0){
tmp=x%10;
sum+=tmp;
x=x/10;
}
return sum;
}
1. 자릿수를 더한 값을 받은 후 max(최대값)와 비교하여 max보다 더 클 경우 max에 자릿수의 합을 넣어준다.
2. 출력해야 되는 것은 각 자릿수의 합이 아닌 입력한 숫자이기에 입력한 숫자를 temp에 저장해 준다.
3. 최대값과 자릿수를 더한 값이 같다면 입력받은 숫자와 temp에 저장된 입력받은 숫자를 비교하여 더 큰 숫자를 temp에 저장해 준다.
4. 비교가 끝난 후 temp를 출력한다.
[실행 결과]
728x90
반응형
'문제풀이 > C++' 카테고리의 다른 글
[C++] 가장 많이 사용된 자릿수 (0) | 2020.12.29 |
---|---|
[C++] 숫자의 총 개수 (small) (0) | 2020.12.29 |
[C++] 모두의 약수 (0) | 2020.12.27 |
[C++] 올바른 괄호 (0) | 2020.12.27 |
[C++] 영어단어 복구 (0) | 2020.12.27 |