728x90
문제 제목: 자릿수의 합
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요.
▣ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 10,000,000를 넘지 않는다.
▣ 출력설명
자릿수의 합이 최대인 자연수를 출력한다.
자릿수의 합이 같을 경우 입력순으로 먼저인 숫자 를 출력합니다.
▣ 입력예제
3 125 15232 97
▣ 출력예제
97
기본 풀이
import sys
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 = 0 #최댓값 구하기를 위해 사용
for x in a:
tot = digit_sum(x) #자릿수끼리의 합 비교
if tot>max:
tot = max #자릿수끼리의 합이 최대인 수를 저장
res = x #최대인 수의 원래 값을 저장
print(res)
while문을 이용하여 10으로 나눈 나머지 값을 더하고, x에는 10으로 나눈 몫을 반환하면서
자릿수끼리의 합을 구하였다.
이 부분은 다른 풀이에서와 마찬가지로 for문을 이용하여
함수부분을 다르게 바꿀 수 있다.
def digit_sum(x): #자릿수끼리 더하는 함수
sum = 0
for i in str(x):
sum += int(i)
return sum
※ 알아야 할 것
- str을 다시 int로 바꾸어서 계산하는 것 잊지 말기
- 마지막까지 문제의 조건 확인!
728x90
'coding test - python > 기본기 문제' 카테고리의 다른 글
문제 / 주사위 게임 / Python (0) | 2022.03.31 |
---|---|
문제 / 뒤집은 소수 / Python (0) | 2022.03.31 |
문제 / 소수 개수 출력하기 (에라토스테네스 체) / Python (0) | 2022.03.31 |
문제 / 정다면체 / Python (0) | 2022.03.31 |
문제 / 대푯값 / Python (0) | 2022.03.31 |