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 |