[Algorithm] 자릿수의 합

myeonji·2022년 1월 16일
0

Algorithm

목록 보기
1/89

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의 자리부터 나누면 되는거였음..

0개의 댓글