n개의 숫자를 입력 받은 뒤 각 숫자의 자릿수를 더한 값이 가장 큰 값을 구하는 문제이다.
digit_sum(x) 함수를 작성해서 문제를 풀 것
예
123 789 99 세 숫자가 있을 때 가장 큰 수는?
정답
789
문제 풀이 - 1
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()))
max = -2147000000
for i in a:
now = digit_sum(i)
if now > max:
max = now
result = i
print(result)
10으로 나눈 값을 더해주면 자릿수의 합이 될 것이고 자릿수의 합을 구하고 난 뒤엔 다음 계산을 위해 10으로 나눈 몫을 사용해준다.
그 후 작성한 함수를 사용해 max값과 비교하며 최댓값을 구한 뒤 해당 숫자를 답으로 넘겨준다.
문제 풀이 - 2
import sys
#sys.stdin = open("input.txt", "r")
def digit_sum(x):
sum = 0
for i in str(x):
sum += int(i)
return sum
n = int(input())
a = list(map(int,input().split()))
max = -2147000000
for i in a:
now = digit_sum(i)
if now > max:
max = now
result = i
print(result)
위의 매커니즘과 동일하지만 digit_sum(x) 함수 부분에서 int형인 x를 str로 바꿔서 for문으로 하나씩 접근하는 방식을 사용 이때는 sum 함수에 해당 자릿수를 더하기 위해서 형변환이 필수다!!