문제
자릿수의 합
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)
# 각 자리를 문자열로 받고 반복문으로 한자리씩 구해서 더하기
'코딩테스트 > 파이썬 코테 기본 강의' 카테고리의 다른 글
파이썬 알고리즘 문제풀이 : Section 2-8 / 뒤집은 소수 (1) | 2022.09.24 |
---|---|
파이썬 알고리즘 문제풀이 : Section 2-7 / 소수(에라토스테네스 체) (1) | 2022.09.24 |
파이썬 알고리즘 문제풀이 : Section 2-5 / 정다면체 (0) | 2022.09.24 |
파이썬 알고리즘 문제풀이 : Section 2-4 / 대표값 (0) | 2022.09.24 |
파이썬 알고리즘 문제풀이 : Section 2-3 / k번째 큰 수 (1) | 2022.09.19 |