문제

자릿수의 합


N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력
하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를
꼭 작성해서 프로그래밍 하세요.


▣ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 10,000,000를 넘지 않는다.


▣ 출력설명
자릿수의 합이 최대인 자연수를 출력한다. 자릿수의 합이 같을 경우 입력순으로 먼저인 숫자
를 출력합니다.


▣ 입력예제 1
3
125 15232 97


▣ 출력예제 1
97


내 풀이

# 내 풀이
def digit_sum(x):
    sum = 0
    init = 1000000
    for i in range(7):
        if(x // init > 0):
            sum += (x//init)
            x = x % init
        init /= 10
    return sum

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

max = 0
index = -1
for i, x in enumerate(num):
    result = digit_sum(x)
    if result > max:
        max = result
        end = x  

print(end)

점수


강사님 풀이

# 강사님 풀이
#import sys
#sys.stdin = open("input.txt", "r")
n = input()
a = list(map(int, input().split()))

def digit_sum(x):
    sum=0
    while x > 0 :
        sum += x % 10 # 끝자리수가 나온다 125 % 10 == 5
        x = x // 10 # 마지막 자리 를 없앤다 125 // 10 == 12
    return sum

max = - 2147000000
for x in a:
    tot = digit_sum(x)
    if tot > max:
        max = tot
        res = x
print(res)

# 125 % 10 == 5

# 125 // 10 == 12

# 끝자리부터 더하면 된다

# 또다른 풀이

# 파이썬에선 이런 풀이도 가능
def digit_sum1(x):
    sum = 0
    for i in str(x): # x 를 문자열처리, i 는 각 자리 문자 하나를 받음
        sum += int(i)
    return sum

max = -2147000000 # 4바이트 정수형 최소 숫자

for x in a:
    tot = digit_sum1(x)
    if tot > max:
        max = tot
        res = x
print(res)

# 각 자리를 문자열로 받고 반복문으로 한자리씩 구해서 더하기

+ Recent posts