[アルゴリズム]ビット数の和
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桁から除算すればいいのです.
Reference
この問題について([アルゴリズム]ビット数の和), 我々は、より多くの情報をここで見つけました https://velog.io/@rladuswl/Algorithm-자릿수의-합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol