[アルゴリズム]ビット数の和



N個の自然数を入力すると,各自然数の桁数の和を求め,プログラムを記述してその和が最大の自然数となるように出力する.

私の答え

def digit_sum(x):
    sum = 0
    x_str = str(x)
    for i in range(len(x_str)):  # for i in str(x)로 쓸 수 있음 -> i가 자릿 수 하나하나 접근
        sum += int(x_str[i])
    return sum

n = int(input())
list1 = list(map(int, input().split()))
max = 0
for i in range(n):
    if digit_sum(list1[i]) > max:
        max = digit_sum(list1[i])
        a = i

print(list1[a])

模範解答

n = int(input())
a = list(map(int, input().split()))

def digit_sum(x):
    sum = 0
    while x>0:
        sum+=x%10
        x=x//10
    return sum

max = -2147000000
for x in a:
    tot = digit_sum(x)
    if tot > max:
        max = tot
        res = x
print(x)
インデックスとしてパラメータxにアクセスします
文字列で置換して文字数を分離し、int型に変換して追加します.
答えを見たらwhile文で桁数を分けます.
入力値が何桁なのかわからないので除算は使えないと思いますが、高位からではなく10桁から除算すればいいのです.