최대 1 분 소요

자릿수의 합

문제 정리

입력

7 // n
137 460 603 40 521 128 125 // n개의 자연수

처리 과정

  1. 각 자리수를 더하는 digit_sum() 작성
  2. lst의 요소를 digit_sum()의 인자로 전달하면서 반환값 누적
  3. tot의 max 구하기
  4. lst의 요소들 중 digit_sum()한 값이 max와 같다면 출력

출력

137 128

풀이

import sys
sys.stdin = open("./input/in6.txt", "rt")

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

## 방법 1: 10으로 나눈 몫과 나머지 구분

# def digit_sum(x):
#     sum=0
#     while x>0:
#         sum += x%10
#         x = x//10 # x를 10으로 나눈 몫
#     return sum

## 방법 2: x를 스트링 처리한 뒤에 한글자씩 int 변환

def digit_sum(x): 
    sum=0
    for i in str(x): # x를 스트링 처리
        sum+=int(i)
    return sum

max=0

# 아래 for문과 같은 코드!
# for i in range(n):
#     if(max<digit_sum(lst[i])):
#         max = digit_sum(lst[i])

for x in lst:
    if max<digit_sum(x):
        max = digit_sum(x)

for x in lst:
    if max==digit_sum(x):
        print(x, end=' ')

정리

  • x를 10으로 나눈 몫: x//10
  • digit_sum()을 작성할 때, x를 스트링 처리 한 뒤에 다시 int로 바꾸어 누적할 수 있음! 아이디어🌟
  • for x in lst:: x는 lst의 값을 순회


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: