6.자릿수의 합
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력
하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를
꼭 작성해서 프로그래밍 하세요.
▣ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 10,000,000를 넘지 않는다.
▣ 출력설명
자릿수의 합이 최대인 자연수를 출력한다.
▣ 입력예제 1
3 1
25 15232 97
▣ 출력예제 1
97
n=int(input())
lst=list(map(int, input().split()))
sum_list=[]
def digit_sum(x):
sum=0
for i in range(len(str(x))):
sum+=int(str(x)[i])
return sum
for x in lst:
sum_list.append(digit_sum(x))
idx=sum_list.index(max(sum_list))
print(lst[idx])
함수 안의 반복문에서 범위를 저렇게 잡지 않고 str(x)로만 해도 문제가 없었다. 차이는 없지만 조금이라도 알아보기 쉬운 코드가 바람직할듯.
함수 실행 부분의 반복문에서는 리스트를 만들어 그 안에 하나씩 합을 append해서 그 안에서 최댓값을 가진 원소의 인덱스를 가져와, 원 리스트의 같은 인덱스를 출력하도록 했는데 효율성에서 차이가 있을지 모르겠다.
def digit_sum(x):
sum=0
while x>0:
sum+=x%10
x=x//10
return sum
n=int(input())
a=list(map(int, input().split()))
res=0
max=-2147000000
for x in a:
tot=digit_sum(x)
if tot>max:
max=tot
res=x
print(res)