[test]자릿수 더하기 - 파이썬

Joy·2020년 4월 20일
0

Coding Test

목록 보기
21/48

문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
N의 범위 : 100,000,000 이하의 자연수

입출력 예
N	answer
123	6
987	24
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

내 풀이

def solution(n):
    new = str(n)
    add = 0
    for i in range(len(new)):
        add += int(new[i])
    return add

n을 문자열로 바꿔서 new에 저장.
new의 길이 만큼 반복하는 i, 그동안 n의 i 인덱스 값을 add에 계속 더해줌. (더할 때는 int로 바꿔줘야 연산가능)
add 값 리턴

참고

def sum_digit(number):
    return sum([int(i) for i in str(number)])

함수식으로 이렇게 한줄로 표현할 수 있음.
sum함수활용.

다른 풀이

1.

def sum_digit(number):
    if number < 10:
        return number;
    return (number % 10) + sum_digit(number // 10) 

재귀함수를 활용해서 10으로 나눈 몫을 계속 더해주고 10으로 나눔. 일의자리수가 될 때 까지

2.

def sum_digit(number):
    return sum(map(int,str(number)))

map으로 묶어서 간결하게.

profile
roundy

1개의 댓글

comment-user-thumbnail
2021년 9월 15일

def sum_digit(num):
return (num - 1) % 9 + 1 if num > 0 else 0

답글 달기