본문 바로가기
코딩테스트/Algorithm

[Algorithm][Python] 자릿수의 합

by codeok 2021. 5. 19.
반응형

[문제]  자릿수의 합

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

 

 

입력 설명

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

 

출력 설명

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

 

입력예제 1

3
125 15232 97

 

출력예제 1

97

 

문제 접근

  1. 자연수 N개를 입력받고, 다음 줄에 N개의 자연수를 입력받습니다.
  2. def digit_sum(x) 함수를 작성해서 자연수 x를 % 10 연산으로 한 숫자씩 더해서 tot에 담아준다.
  3. 자릿수의 합이 최대인 자연수를 출력
  4. 자릿수의 합이 같을 경우 입력순으로 먼저인 숫자 출력

 

풀이

 

나의 코드

  • 1행 : digit_sum(x) 함수에서 x의 자연수를 str로 만들어서 result에 복합 연산을 해줬습니다.

 

def digit_sum(x):

    result = 0

    for i in str(x):
        result += int(i)

    return result

N = int(input())
a = list(map(int, input().split()))
max = -2147000000
res = 0


for x in a:
    total = digit_sum(x)
    if total > max:
        max = total
        res = x

print(res)

 

 

정답 코드

  • 1행 : digit_sum(x) 함수에서 while문을 x 가 0보다 클때까지 반복하고, sum에 10으로 나눈 나머지를 덧셈 복합 연산으로 해결해줍니다. x 는 10으로 나눈 몫으로 초기화해줍니다. 

 

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
answer = 0

for x in a:
    total = digit_sum(x)
    if total > max:
        max = total
        answer = x

print(answer)
반응형