프로그래머스_Lv1_자릿수 더하기_파이썬

Today Jeeho Learned·2022년 9월 8일
0

알고리즘

목록 보기
16/38
post-thumbnail

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/12931

내 답안

def solution(n):
    arr = str(n)
    answer = 0
    for i in range(len(arr)):
        answer += int(arr[i])
    return answer

풀이 정리

자리수를 어떻게 구분지어 나누어줄까를 고민했다. str형태로 바꿔줄까? 아니면 10씩 나눈 나머지에 나눈값을 반복문을 통해서 해야하나를 고민하다가 우선 바로 적용해볼수있는 방법을 선택하여 문자열로 변경 하는 풀이방법으로 진행해보았다.

  1. 먼저 정수형태로 들어오는 수를 str형태로 바꿔주었다. 그렇게 하면 각 배열의 자리에 숫자가 하나씩 들어 갈 것이기 때문이다.
  2. str로 들어온 길이만큼 0번째 인덱스부터 확인해가는 과정에서 다시 문자열인 배열의 요소를 정수형으로 변경해주어 각자리수를 더해준다.
  3. answer값에 담겨진 값을 return해준다.

다른 풀이

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

내가 위에서 생각했던 방법대로 진행한 코드가 있는데, 재귀함수를 통해서 이문제를 해결했다. 정말 감탄했다. 10보다 작은 값은 그냥 더하여주고, 계속 10으로 나눈 나머지와 10으로 나누어가면서 더해주는 코드가 정말 완벽한 것같다. 아직 재귀함수에 대해서 자신감이 부족하고, 무겁게 느껴지는데 이런 풀이방법도 생각해가면서 풀어봐야겠다.

profile
기록해야 (살아)남는다 !

0개의 댓글