N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요.
▣ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 10,000,000를 넘지 않는다.
▣ 출력설명
자릿수의 합이 최대인 자연수를 출력한다. 자릿수의 합이 같을 경우 입력순으로 먼저인 숫자 를 출력합니다.
3
125 15232 97
97
[내 코드]
def add_each(n):
sum=0
while(n>0):
sum+=n%10
n//=10 #파이썬에서의 몫 구하기 : //
return sum
def max_(n):
max=0
for i in range(len(n)):
if(max<n[i]):
max=n[i]
return max
N=int(input())
a=[]
a=list(map(int,input().split()))
b=[]
for i in range(N):
b.append(add_each(a[i]))
for j in range(N):
if(max_(b)==b[j]):
print(a[j])
break
1.각 자릿수를 더하는 함수 addeach 정의
2.배열 내의 max값 반환하는 함수 max정의
3.각 자릿수를 더한값을 배열 b에 삽입
4.배열b의 값이 max값과 동일하다면 입력받은 N개의 자연수 배열 a에서 출력
[해설 코드 1]
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(res)
[해설 코드 2]
n=int(input())
a=list(map(int,input().split()))
def digit_sum(x):
sum=0
for i in str(x):
sum+=int(i)
return sum
max=-2147000000
for x in a:
tot=digit_sum(x)
if tot>max:
max=tot
res=x
print(res)
1.입력 받은 수를 스트링으로 변환 후 각 자리수를 다시 정수형으로 변환 후 더하는 알고리즘