본문 바로가기
알고리즘

Algorithm - 자릿수의 합

by DGK 2021. 11. 2.

 

알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

문제

[자릿수의 합]

 

N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하는 프로그램을 작성하시오.

(단, 각 자연수의 자릿수 합을 구하는 함수 def digit_sum(x)을 사용해서 프로그램을 작성할 것)

 

 

*입력 설명

첫 번째 줄에는 자연수의 개수 N(3 ≤ N ≤ 100)이 주어진다.

두 번째 줄에는 N개의 자연수가 주어진다.

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

 

*출력 설명

첫 번째 줄에 자리수의 합이 최대인 자연수를 출력한다.

단, 자리수의 합이 같을 경우에는 먼저 입력된 숫자를 출력한다.

 

 


 

 

풀이(Python)

답안(1)

import sys
sys.stdin = open('AA/input_6.txt', 'rt')

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 = -2147000000

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

# 출력 : 97

 

답안(2)

import sys
sys.stdin = open('AA/input_6.txt', 'rt')

n = int(input())
a = list(map(int, input().split()))

def digit_sum(x):
    sum = 0
    for i in str(x):
        sum += int(i) 
    return sum

max = -2147000000

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

# 출력 : 97

 

input_6.txt(입력)

3
125 15232 97

 

 

중요내용

답안(2)의 for i in str(x): 코드에서 str() 함수는 인자 x에 들어온 숫자를 각 자리의 숫자로 문자열 형변환하여 하나씩 반환한다. (ex. x=125이면, i는 문자열 1, 2, 5로 반환됨)

 

 

'알고리즘' 카테고리의 다른 글

Algorithm - 뒤집은 소수  (0) 2021.11.02
Algorithm - 소수의 개수(에라토스테네스 체)  (0) 2021.11.02
Algorithm - 정다면체  (0) 2021.11.02
Algorithm - 대표값  (0) 2021.11.01
Algorithm - 최소값 구하기  (0) 2021.10.29

댓글