[알고리즘]자릿수의 합

김도연·2024년 1월 2일

알고리즘

목록 보기
6/56

문제

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

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

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

입력예제 1

3
125 15232 97

출력예제 1

97

[내 코드]

def add_each(n):
    sum=0
    while(n>0):
        sum+=n%10
        n//=10  #파이썬에서의 몫 구하기 : //
    return sum

def max_(n):
    max=0
    for i in range(len(n)):
        if(max<n[i]):
            max=n[i]
    return max

N=int(input())
a=[]
a=list(map(int,input().split()))
b=[]
for i  in range(N):
    b.append(add_each(a[i]))
for j in range(N):
    if(max_(b)==b[j]):
        print(a[j])
        break

1.각 자릿수를 더하는 함수 addeach 정의
2.배열 내의 max값 반환하는 함수 max
정의
3.각 자릿수를 더한값을 배열 b에 삽입
4.배열b의 값이 max값과 동일하다면 입력받은 N개의 자연수 배열 a에서 출력

[해설 코드 1]

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)

[해설 코드 2]

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)

1.입력 받은 수를 스트링으로 변환 후 각 자리수를 다시 정수형으로 변환 후 더하는 알고리즘

0개의 댓글