프로그래머스 LV1 자릿수 더하기(연습문제)

프로그래머스 LV1 자릿수 더하기(연습문제)

2021, Apr 05    

프로그래머스 lv1 자릿수 더하기(연습문제)

문제 설명

자연수 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):
    str(n)
    new_n = 0
    for i in str(n): 
        new_n+=int(i)
    return new_n

숫자를 문자형으로 바꿔서 반복문을 통해 하나씩 더해 줌


# 다른 사람 풀이. 재귀 함수를 이용한 풀이

def sum_digit(number):
    if number < 10:
        return number
    print("number:",number)
    print("number % 10:",number % 10)
    print("sum_digit(number // 10):",sum_digit(number // 10))
    return (number % 10) + sum_digit(number // 10) 

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(sum_digit(123)))

123으로 예를 들면 %10은 10으로 나눈 나머지 즉 3을 리턴.
//10은 10으로 나눈 몫의 정수이다. 즉 12를 리턴
3 + sum_digit(120) 이므로 두번째 돌리면 3 + 2 + sum_digit(1)이 된다
number가 10보다 작으므로 1을 리턴. 즉 3+2+1 이 된다.


# 다른 사람 풀이3.
def sum_digit(number):
    '''number의 각 자릿수를 더해서 return하세요'''
    return sum(map(int,str(number)))

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(sum_digit(123)));

map(함수, 이터레이터)
첫번째 풀이랑 별 다른게 없이 str으로 바꿨다가 int로 바꾸고 더해줬다. 함수들을 사용하여 코드를 짧게 썼다.


출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges