
프로그래머스 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