자릿수 더하기

수이·2025년 3월 6일
0

🟢 코드카타 / PYTHON

목록 보기
13/46
post-thumbnail

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

풀이
문자열을 반복문을 통해서 돌면 'hello' => 'h' 'e' 'l' 'l' 'o'가 된다는 내용을 강의에서 본 기억이 어렴풋이 나서, 숫자를 문자로 변환하고 한 자리씩 숫자로 변환해서 더해주기로 함

def solution(n):
    answer = 0
    for i in str(n): # 숫자 n 문자열로 변환 (123 -> "123")
        answer += int(i) 
        # int(i) 가져온 글자를 다시 숫자로 변환 
        # answer + int(i) = answer에 다시 저장 
    return answer

다른 사람 풀이

1. 간단한 버전
내가 쓴 거랑 개념은 똑같은데 한 줄로 줄여버린 게 멋지다
다들 천재군요

def solution(n):
    return sum(int(i) for i in str(n))

2. 재귀함수 활용
이건 아직도 어떻게 했는지 잘 모르겠어서 쥐피티햄한테 물어봤다

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

재귀함수

자기 자신을 호출하는 함수

코드 분석

def sum_digit(number):
    if number < 10:  # 한 자리 숫자가 되면 그대로 반환
        return number
    return (number % 10) + sum_digit(number // 10)  # 마지막 자릿수 + 나머지 자릿수를 다시 함수 호출
sum_digit(123)3 + sum_digit(12)3 + (2 + sum_digit(1))3 + (2 + 1)3 + 2 + 1 = 6

0개의 댓글

관련 채용 정보