파이썬 알고리즘 006 | 자릿수의 합

Yunny.Log ·2021년 1월 6일
0

Algorithm

목록 보기
6/318
post-thumbnail

6. 자릿수의 합

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

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

▣ 출력설명
자릿수의 합이 최대인 자연수를 출력한다.

▣ 입력예제 1
3 1
25 15232 97

▣ 출력예제 1
97

<내 풀이>

n=int(input())
a=list(map(int, input().split()))
max=0
bb=[]

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

for i in a :
    b=digit_sum(i)
    bb.append(b)

for i in a :
    if max < digit_sum(i) : 
        max=digit_sum(i)


print(a[(bb.index(max))])

<풀이>

강사님이 각 자릿수의 합을 구한 방식은 나누기 십을 하면서 나머지를 더해 나가는 것이었다.

def digit_sum(x) : 
	sum=0
    while x>0 L
    	sum+= x%10
        x=x//10
    return sum
max=0
for x in a : 
	tot = digit_sum(x)
    if tot>max :
    	max=tot
    	res=x    #max가 된 경우, 그 때의 x!!
print(res)

<반성점>

  • 최대, 최솟값 구할 때 max or min 비교하고 갱신시키는 방식으로

<배운 점>

  • str로 숫자를 변환하면 for로 따로 따로 떼놓을 수 있다

  • 각 자릿수의 합을 한줄짜리 for문을 이용해서 간편하게 구하는 방법

def digit_sum(n):
    return sum([int(i) for i in str(n)])

0개의 댓글