[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/알고리즘 연습

[알고리즘 연습] 자릿수의 합 비교하기 (by C++)

inu 2020. 3. 12. 16:14
반응형

자릿수의 합 비교하기

  • 자연수 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이지만외우기어려우므로 이렇게만 기억하자.)

반응형