coding test - python/기본기 문제

문제 / 자릿수의 합 / Python

sillon 2022. 3. 31. 17:57
728x90
반응형

 

문제 제목: 자릿수의 합

 

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

 

▣ 입력설명

 

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

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

 

▣ 출력설명

 

자릿수의 합이 최대인 자연수를 출력한다.

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

 

▣ 입력예제 

 

3 125 15232 97

 

▣ 출력예제 

 

97

 


기본 풀이

import sys
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 = 0 #최댓값 구하기를 위해 사용

for x in a: 
    tot = digit_sum(x) #자릿수끼리의 합 비교
    if tot>max:
        tot = max #자릿수끼리의 합이 최대인 수를 저장
        res = x #최대인 수의 원래 값을 저장

print(res)

 

while문을 이용하여 10으로 나눈 나머지 값을 더하고, x에는 10으로 나눈 몫을 반환하면서

자릿수끼리의 합을 구하였다.

 

이 부분은 다른 풀이에서와 마찬가지로 for문을 이용하여

함수부분을 다르게 바꿀 수 있다.

 

def digit_sum(x): #자릿수끼리 더하는 함수
    sum = 0
    for i in str(x):
        sum += int(i)
    return sum

※ 알아야 할 것

- str을 다시 int로 바꾸어서 계산하는 것 잊지 말기

- 마지막까지 문제의 조건 확인!

 

728x90
반응형