코딩테스트[파이썬]/알고리즘 문제풀이 입문

[구현력 기르기] - 자릿수의합

softmoca__ 2024. 2. 4. 23:15
목차

자릿수의 합

N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요.

각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요.

 

입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.

각 자연수의 크기는 10,000,000를 넘지 않는다.

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

 

입력예제 1

3
125 15232 97

출력예제 1

97

 

 

나의 코드

def digit_sum(x):
    s=0
    while x>0:
        s+=x%10
        x=x//10
    return s

n=int(input())
arr=list(map(int,input().split()))
res=0
M=0
for x in arr:
    if M < digit_sum(x):
        M=digit_sum(x)
        res=x
print(res)

입력값들을 arr리스트에 넣은뒤 하나씩 꺼내 digit_sum함수에 넣어 반환받은 값을 비교해서 가장 큰값을 출력한다.

 

 

 

 

정답 코드

import sys
sys.stdin=open("input.txt", "r")
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)