얄루몬 2022. 6. 30. 18:25

문제

  • 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 함수에 해당 자릿수를 더하기 위해서 형변환이 필수다!!