[프로그래머스] Lv1. 자릿수 더하기

최대 1 분 소요

문제

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

제한 조건

  • N의 범위 : 100,000,000 이하의 자연수

나의 풀이:

def solution(n):
    a = str(n)
    answer = 0
    for i in a:
        answer+=int(i)
    return answer

우선 생각나는대로 풀어본 방법. for 문 다음에 숫자를 중첩해서 더하는, 지금까지 풀어본 문제들과 비슷한 패턴이 보인다.

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

sum() 과 리스트 조건문을 사용해서 코드를 훨씬 간결하게 만들었다

다른 사람들의 풀이:

def solution(n):
    if n < 10:
        return n;
    return (n % 10) + solution(n // 10)

for문 대신 재귀함수를 사용한 풀이방법이다.

알고 있기로는 재귀함수가 메모리를 많이 차지하며 성능이 반복문에 비해 느리다고 알고 있는데, 이 문제의 경우에는 아주 큰 차이는 아니지만 재귀함수를 쓰는 것이 오히려 더 좋은 성능을 보이는 것으로 나타났다.

for문을 사용한 풀이의 경우:

1

재귀함수를 사용한 경우:

1

댓글남기기