진짜 너무 멋있었다.
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
아니 진짜 이선생님은 신인가...? 자릿수 구하기에서 내가 생각한 컨셉은 두개다.
<여기서부터는 선생님의 답이다>
def sum_digit(number):
if number < 10:
return number;
return (number % 10) + sum_digit(number // 10)
print("결과 : {}".format(sum_digit(123)));
'num % 10'는 첫번째 자리를 구해주고, '함수(num // 10)'는 계속 나눠주면서 분열하여 두번째, 세번째... 자리 숫자를 계속 + 할 수 있게 해줌
ex) 숫자가 123일 경우~
123 % 10 = 3, (함수(123 // 10) = 12 ≒ 2 + 함수(12 // 10)
Base case에 10 미만인 자연수일때는 그대로 리턴하고 Recursive method에는 각각의 자릿수를 10으로 나눈 나머지를 이용해 더하는 방식
설명하신 선생님도 너무 훌륭하다. 군더더기 없는 해답인듯.
def sum_digit(number):
return sum([int(i) for i in str(number)])
이것도 멋진듯.