Python | 자릿수의 합

crystal·2021년 9월 6일
0

Algorithm

목록 보기
8/8

자릿수의 합

1. 문제 🧐

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


2. 입력

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

3
125 15232 97


3. 출력

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


4. 문제 풀이 핵심 point 🔍

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

이 부분이 핵심포인트다. x의 몫이 0에 가까워질 때까지 x를 10으로 나눴을 때 나머지 값을 sum에 더해주면 자릿수의 합이 나온다.

5. 코드 💻

1) 내 풀이 1 - 함수 x

import sys
sys.stdin=open("input.txt","r")

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

print(num)

# 1단계 : 예를 들어 125를 1,2,5로 분리하기
str_list = []
for n in num:
    str_list.append(list(str(n)))

print(str_list)


# 2단계 : 각 자리수 문자열을 int타입으로 만들어서 
# 더한 값을 다시 sum_list에 넣어주기
sum_list=[]
sum = 0
for num_list in str_list:
    sum = 0
    for n in num_list:
        sum += int(n)
    sum_list.append(sum)

# print(num)
print(sum_list)

# 3단계 : 자릿수의 합 중에 최대값 구하기
max = 0 #최대값 구할 변수
midx = 0
for idx, i in enumerate(sum_list):
    if i > max:
        max=i
        midx=idx

print(num[midx])


2) 내 풀이 2 - 함수 o

import sys
sys.stdin=open("input.txt","r")

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

# print(num)

str_list = []
sum_list=[]
def digit_sum(x):
    sum = 0
    for num_list in str_list:
        sum = 0
        for n in num_list:
            sum += int(n)
    sum_list.append(sum)

for n in num:
    str_list.append(list(str(n)))
    digit_sum(n)

# print(str_list)
# print(num)
# print(sum_list)

max = 0
midx = 0
for idx, i in enumerate(sum_list):
    if i > max:
        max=i
        midx=idx

print(num[midx])

3) 모범답안


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

for x in a:
    ja = digit_sum(x)
    if ja > max:
        max = ja
        res = x
    print(res) 
출처 : 한국정보올림피아드
profile
어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧ 

0개의 댓글

관련 채용 정보